Как сделать так, чтобы окно Tkinter не зависало пока выполняются другие процессы?
Я использую функцию которая ждет некоторое время, и когда эта функция выполняется, окно в Tkinter зависает. Вот код:
import tkinter, time, tkinter.messagebox
def wait_for_response():
time.sleep(10)
return tkinter.messagebox.askquestion("Hello World!", "Hello World!")
root = tkinter.Tk()
print(wait_for_response())
root.mainloop()
Пока функция ждет, окно зависает пока функция не закончится.
Я уже пробовал использовать queue и threading, но тогда окно вообще не показывалось.
Как сделать так, чтобы окно Tkinter не зависало пока выполняется функция, и получить из этой функции данные?
Ответы (1 шт):
Автор решения: gord1402
→ Ссылка
Вот правильный пример использования tkinter и threading это сработало для меня:
import time
import tkinter
import tkinter.messagebox
from threading import Thread
answer = None
def wait_for_response():
global answer
time.sleep(10)
answer = tkinter.messagebox.askquestion("Hello World!", "Hello World!")
root = tkinter.Tk()
th = Thread(target=wait_for_response)
th.start()
button = tkinter.Button(root, text="Print answer", command=lambda: print(answer))
button.pack()
root.mainloop()