Frage zu Tkinter und MAC

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Rednaxelarekced
User
Beiträge: 17
Registriert: Mittwoch 6. März 2019, 22:04

Hallo zusammen ich habe folgendes Problem.

ich fange gerade mit Python an und will nun eine Kleine Datenbank schreiben als Übung also Hauptmenü mit 3 Buttons

Datensatz anlegen
Daten anzeigen
Datensatz suchen


und dann jeweils in ein anderes Fenster springen.


Jetzt habe ich in Tkinter ein Fenster mit einem Button erstellt, noch ohne Funktion(keine Listender).

wenn ich das Fenster erzeuge ist erst alles OK, aber wenn ich auf den Button drücke dann flackert der total und man kann nix mehr lesen.

der Code ist folgender

Code: Alles auswählen

from tkinter import *

# Ein Fenster erstellen
fenster = Tk()
# Den Fenstertitle erstellen
fenster.title("Ich mache nun was.")


change_button = Button(fenster, text="Datensatz Anlegen")

change_button.pack()

fenster.mainloop()
vielleicht könnte mir jemand helfen ob ich hier ein Fehler mache oder ob das ein Bug ist.
ich nutze ein MacbookPro 2021


vielen Dank im voraus für die Hilfe
Benutzeravatar
__blackjack__
User
Beiträge: 13061
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Rednaxelarekced: Das Problem kann ich bei mir nicht nachvollziehen, sollte aber auch nicht existieren. Ist also vielleicht wirklich ein Bug.

Wenn Du gerade anfängst, solltest Du aber vielleicht nicht gleich mit GUI anfangen. Normale Reihenfolge wäre so das allgemeine wie Entscheidungen und Wiederholungen, Grunddatenstrukturen, dann Funktionen, dann Klassen, denn dazu muss man Funktionen verstanden haben, und dann erst GUI, denn dazu braucht man Klassen. Wenn Du mit GUI anfängst, musst Du alles auf einmal lernen.

Anmerkungen zum Quelltext: Sternchen-Importe sind Böse™. Bei `tkinter` holt man sich da um die 160 Namen ins Modul. Und nicht nur die, die in `tkinter` definiert werden, sondern auch die, die `tkinter` selbst wiederum von wo anders importiert. Es besteht die Gefahr von Namenskollisionen, und man sieht auch nicht mehr so leicht wo eigentlich welcher Name her kommt.

Auf Modulebene sollte nur Code stehen, der Konstanten, Funktionen, und Klassen definiert. Das Hauptrogramm steht üblicherweise in einer Funktion die `main()` heisst.

Code: Alles auswählen

#!/usr/bin/env python3
import tkinter as tk


def main():
    fenster = tk.Tk()
    fenster.title("Ich mache nun was.")

    change_button = tk.Button(fenster, text="Datensatz Anlegen")
    change_button.pack()

    fenster.mainloop()


if __name__ == "__main__":
    main()
Und dann solltest Du auch beim GUI-Programm erst einmal mit der Programmlogik anfangen, also die Datenbank und die Operationen darauf schreiben und testen. Und wenn das läuft, den GUI-Code da drauf setzen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten