Есть ли способ заморозить основной поток без заморозки интерфейса пользователя tkinter? - PullRequest
0 голосов
/ 30 марта 2020

Я получил Tkinter GUI с обратным вызовом обновления.

def update(self):
    do_calculations()
    update_GUI()
    self.root.after(self.delay, self.update)

self.root = tk.Tk()
self.update()
self.root.mainloop()

Мне нужно выполнить некоторые вычисления, и на основе этих расчетов мне нужно обновить мой GUI. do_calculations () выполняется некоторое время, поэтому я запускаю его в отдельном потоке, поэтому мой GUI не замерзнет. Проблема в том, что я могу обновить только свой GUI из основного потока, поэтому мне нужно дождаться завершения do_calculations (), которое замораживает мой GUI. Если я не жду окончания my_calculations (), иногда update_ GUI () вызывается с неверными данными. Есть ли обходной путь для таких ситуаций?

...