Mam program, który uruchamia długi proces po kliknięciu przycisku akcji. Ponieważ proces jest uruchomiony, okno główne powie, że nie odpowiada, mimo że wiem, że program działa w tle. Ten program zostanie wydany kilku osobom, z którymi pracuję i chcę się upewnić, że nie zwariują i nie zamkną okna, kiedy to zobaczą. Rozwiązaniem, które mam, jest umieszczenie root.update w pętli uruchomionego procesu, ale nie jestem pewien, czy to najlepsza poprawka.Okno Tkintera mówi (nie odpowiada), ale kod jest uruchomiony
Używanie Pythona 3.3
Oto przykład kodu więc zorientować się, co robię, to jest wywoływana z pętli głównej:
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()
Powinieneś uruchomić proces w tle w innym wątku. Twój program z jednym gwintem może wykonać tylko jedną rzecz na raz. Kiedy Twój długotrwały proces działa, interfejs użytkownika nie może nadążyć. – korylprince