Tkinter Menü öffnet sich nicht Python Programmierung?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Du startest die Main Loop erst nach einer Endlosschleife, also nie. GUI-Programmierung läuft völlig anders ab:

Du definierst zuerst Deine GUI-Elemente und startest danach nur die Main Loop. Diese wartet einfach auf Ereignisse und bearbeitet sie. Ereignisse sind z.B.:

  • Das Fenster wird geschlossen: ⇒ exit()
  • Du klickst auf einen Button: ⇒ die hinterlegte Funktion wird aufgerufen.
  • Ein Timer meldet sich: ⇒ die hinterlegte Funktion wird aufgerufen.

Mein Vorschlag:

  1. Ändere zuerst die Zeile "while True:" in "def auswertung():". Dein Programm sollte jetzt starten, aber nichts tun oder anzeigen.
  2. Definiere einen Button mit der Aktion auswertung. Wahrscheinlich braucht die Aktion eine andere Signatur. Dann definiere eine Funktion btn_auswertung(...) mit den passenden Parametern und rufe im Body auswertung() auf. Jetzt startet Dein Programm und zeigt den Button an. Jedes mal, wenn Du draufklickst, werden Deine Labels gesetzt.
  3. Deine auswertung() erzeugt bei jedem Aufruf neue Labels. Nach ein paar Klicks wird Dein Fenster ziemlich voll sein. Besser ist es, wenn Du die nötigen Labels vorab definierst und in auswertung() nur deren Text überschreibst.
  4. Sobald alles wie gewünscht funktioniert, kannst Du einen Timer anlegen, der auswertung() alle 0.01 Sekunden aufruft. Wahrscheinlich brauchst Du auch hier eine Funktion tmr_auswertung(...) mit passender Signatur. Der Button ist nun nicht mehr nötig. Jetzt läuft das Programm so, als würdest Du hundertmal pro Sekunde auf den Button klicken.

Du hast also noch viel Arbeit vor Dir.

Danke für die Tipps. Ich werde es so mal ausprobieren. Aber in der Theorie klappen ja die In-Abfragen, oder?

0
@Bluberblab2003

Nicht wirklich. Du setzt in den Zeilen 26 und 38 Test1 auf 1 bzw. 2. Die folgenden Zeilen werden damit nicht ausgeführt. Und mit Test2/3/4=0 werden auch die Zeilen 70 bis 127 nie ausgeführt.

0

versuch einfach mal mainLoop() direkt hinter while true zu setzen, bin aber leider net so der python experte

Ich werde es gleich mal probieren. Aber top das du mir trotzdem hilfst :)

0

Was möchtest Du wissen?