/ / Tkinter i multi-threading - python, wielowątkowość, tkinter

Tkinter i multi-threading - python, wielowątkowość, tkinter

Użyłem następującego kodu, aby sprawdzić, czyTkinter działa wraz z wielowątkowością. Ale poniższy kod nie działa (Gui przestaje odpowiadać, gdy tylko zostanie uruchomiony) Czy ktoś może wyjaśnić, dlaczego to nie działa?

from threading import Thread
import tkinter as tk

window = tk.Tk()
label = tk.Label(window, text="Hello")
label.pack()

def func():
i = 1
while True:
label["text"] = str(i)
i += 1

Thread(target=func).start()
Thread(target=window.mainloop).start()

Odpowiedzi:

2 dla odpowiedzi № 1

To nie działa, ponieważ Tkinter nie wspierawielowątkowość. Wszystko, co wchodzi w interakcję z widgetem Tkinter, musi działać w głównym wątku. Jeśli chcesz korzystać z wielowątkowości, umieść GUI w głównym wątku, a drugi kod w wątku roboczym i komunikuj się między nimi za pomocą kolejki bezpiecznej dla wątków.