Ich habe ein Programm, das einen langen Prozess ausführt, nachdem Sie auf eine Aktionsschaltfläche klicken. Während der Prozess läuft, sagt das Hauptfenster, dass es nicht antwortet, obwohl ich weiß, dass das Programm im Hintergrund läuft. Dieses Programm wird für einige Leute, mit denen ich arbeite, veröffentlicht und ich möchte sicherstellen, dass sie nicht ausflippen und das Fenster schließen, wenn sie das sehen. Die Lösung, die ich habe, sitzt ein root.update in der Schleife des laufenden Prozesses, aber ich bin mir nicht sicher, dass dies die beste Lösung war.Tkinter Fenster sagt (reagiert nicht) aber Code läuft
die Python 3.3
Hier verwenden ist eine Probe des Codes, so dass Sie eine Vorstellung davon, was ich tue, das von der Hauptschleife aufgerufen wird:
def combine(boxes_to, boxes_from, frame):
to_value,to_pos = gui.checkBoxes(boxes_to)
from_value,from_pos = gui.checkBoxes(boxes_from)
frame.destroy()
running = Label(root,text="Running please do not close..",font = (16))
running.pack()
root.update()
map_to = open("map_to",'r')
for line in map_to:
root.update()
process(line)
running.destroy()
map_to.close()
finish = Button(root, text="Done",command=gui.stop)
finish.pack()
Sie sollten den Hintergrundprozess in einem anderen Thread ausführen. Ihr single-threaded Programm kann immer nur eine Sache gleichzeitig tun. Wenn Ihr lang andauernder Prozess ausgeführt wird, kann die Benutzeroberfläche nicht mithalten. – korylprince