BlackJack hat geschrieben: ↑Donnerstag 29. Juni 2017, 09:36
Von objektorientierter Programmierung sieht man in Deinem Beispiel auch nichts — das ist aber Voraussetzung für GUI-Programmierung. Ohne bekommt man kein sauberes Programm hin.
Da muss ich BlackJack beipflichten. Ich arbeite jetzt schon sehr viel und lange mit Tkinter und bis auf einige kleine Tests, etc. habe ich alles objektorientiert gemacht, weil es einfach das beste für solche Applikaitonen ist.
Um die Frage nach der Tk.mainloop-Funktion zu klären: Innerhalb von Python IDLE laufen Tkinter-GUIs auch ohne mainloop. Diese laufen dann sozusagen im Hintergrund mit, während man die Shell normal benutzen kann. Mit mainloop kann man keine Befehle in der Shell ausführen, da die Applikation jetzt 'aktiv mit in der Shell läuft' (Ja, mir rollen sich bei der Erklärung auch die Fußnägel hoch, aber es verdeutlicht, was ich sagen will.). Wenn man das ganze jetzt außerhalb des Python IDLE betrachtet und das Programm z.B. über die Windows Shell ausführt würde das Programm ohne mainloop sofort beendet werden, da scheinbar alle Tasks erfüllt sind. Wenn die mainloop allerdings läuft ist diese sozusagen der Prozess, der das Programm selber am laufen hält.
Falls ich Ihr Problem richtig verstanden habe, hab' ich evtl. eine Lösung ohne 2. Schleife für Sie:
Code: Alles auswählen
from tkinter import Tk,Entry,StringVar,Label
class App(Tk):
def __init__(self):
Tk.__init__(self)
Label(self,text='Text hier eingeben:').pack()
self.input=StringVar(self,'')
self.input.trace('w',self.check)
Entry(self).pack()
def check(self):
text=self.input.get()
#Suche nach Tag und weitere Vorgänge
if __name__=='__main__': App().mainloop()