Мне нужно остановить / запустить поток на основе определенных условий.Я могу использовать флаг, чтобы запустить его, а затем остановить его, но когда я пытаюсь запустить его снова, я получаю RuntimeError: threads can only be started once
. Например, в следующем коде пользователь нажимает клавишу escape для запуска или остановки.этикетка от перепрошивки.Первый вызов начинается, второй вызов останавливается, но третий вызов вызывает ошибку во время выполнения.
from tkinter import *
import threading
import time
class App:
def __init__(self, master):
self.label = Label(text="TEXT?", font=('Helvetica', 30))
self.label.pack()
self.labelFlash = False
self.t = threading.Thread(target=self.flash)
root.bind("<Escape>", self.flashEvent)
def flashEvent(self, event):
if self.labelFlash == False:
self.labelFlash = True
self.t.start()
elif self.labelFlash == True:
self.labelFlash = False
print(self.labelFlash)
def flash(self):
while self.labelFlash == True:
self.label.config(bg='red')
root.update()
time.sleep(.5)
self.label.config(bg='green')
root.update()
time.sleep(.5)
root = Tk()
app = App(root)
root.mainloop()
Как перезапустить поток без этой ошибки?Спасибо.