Итак, у меня есть два потока python, запущенных внутри класса. Я проверил, используяБесконечные петли в потоках Python
threading.active_count()
и он говорит, что обе потоки запущены. Первый поток включает в себя окно tkinter, которое отлично работает. Второй поток, который я использую в качестве диспетчера событий для первого окна, который также хорошо работает сам по себе. Однако, когда я запускаю второй поток рядом с первым потоком, первый поток не работает, т.е. окно не появляется. Это даже если первый поток выполняется первым. Когда я удаляю бесконечный цикл из второго потока, первый поток снова работает, может ли кто-нибудь объяснить это мне? Вот класс:
class Quiz(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def show(self, question):
self.question = quiz[question][0]
self.correct = quiz[question][1]
self.incorrectA = quiz[question][2]
self.incorrectB = quiz[question][3]
self.ref = quiz[question][4]
questionDisplay.config(text=self.question)
correctButton = "answer" + str(self.ref[0])
eval(correctButton).config(text=self.correct, command=lambda : check(True))
incorrect1 = "answer" + str(self.ref[1])
eval(incorrect1).config(text=self.incorrectA, command= lambda : check(False))
incorrect2 = "answer" + str(self.ref[2])
eval(incorrect2).config(text=self.incorrectB, command= lambda : check(False))
return self.correct
def run(self):
print("thread started")
print(threading.active_count())
while True:
print(questionQueue.qsize())
if questionQueue.qsize() >= 1:
pass
else:
pass
print("looped")
Благодаря
Если кому-то нужно больше кода, просто скажите мне –
Быстрая точка: поскольку ваш класс наследует '__init__' из' threading.thread', если вы его не определяете, вы можете также опустить этот метод из своего определения. – holdenweb
Вообще говоря, tkinter не поддерживает потоки. Это можно сделать до тех пор, пока GUI работает только в основном потоке и взаимодействует с другими, которые он совершает через блокировки, для управления параллельным доступом к данным и/или потокобезопасным структурам данных, таким как очереди. – martineau