В настоящее время я работаю над небольшим проектом в Python 3, используя tkinter и threading, чтобы создать программу, которая работает в режиме реального времени вместе с пользовательским вводом.Точнее говоря, проблема в том, что я не могу обновить графический интерфейс tkinter из отдельного потока.Я пробовал несколько методов, включая метод .set, .update_idletasks и запуск потока из обратного вызова, но я не могу заставить его работать вообще.Ниже приведена короткая попытка, которая запускает поток, который должен продолжать увеличивать счетчик после нажатия кнопки в графическом интерфейсе.
from tkinter import *
import threading
var = 0
class thread1 (threading.Thread):
def __init__(self, threadID, name, counter):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.counter = counter
def run(self):
while True:
global var
while True:
var+=1
window.update_idletasks()
examplethread = thread1(1, "example", 1)
window = Tk()
text = Label(window, text=var)
button = Button(window, text = "launch thread", command=examplethread.start)
text.pack()
button.pack()
window.mainloop
Это не работает, вместо этого я выдаю ошибку, которая, как я знаю, говорит, что яя не могу использовать команды tkinter вне потока, в котором работает mainloop (). Мне было интересно, можно ли получить графический интерфейс tkinter для обновления на основе результатов кода, который зацикливается в фоновом режиме, так как ввод другого игрока вводится вв то же время.