【发布时间】:2021-03-04 17:13:32
【问题描述】:
我正在使用 GUI (Tkinter) 制作一个随机数猜谜游戏,这出现了 RuntimeError: threads can only be started once。我试图杀死线程,但我找不到任何方法。代码如下:
def main(c):
global max_num, number, guess_num, enter, l1, t1
if c <= 5:
messagebox.showerror(title='Import error', message='Please add a bigger number than 5')
max_num.delete(0, END)
else:
number = random.randrange(1, c+1)
print(number)
t1 = threading.Thread(target=lambda: process(int(guess_num.get())))
l1 = Label(root, text='Whats the number?')
guess_num = Entry(root, bd=3)
enter = Button(root, text='Enter', command=t1.start)
l1.grid(row=2)
guess_num.grid(row=3)
enter.grid(row=3, column=1)
def process(answer):
global number
if number == answer:
result = Label(root, text='Correct Answer!')
result.grid(row=4)
guess_num.destroy()
enter.destroy()
l1.destroy()
else:
if answer > number:
wrong_result = Label(root, text='Wrong Answer! Your answer is bigger than the random number', fg='red')
elif answer < number:
wrong_result = Label(root, text='Wrong Answer! Your answer is smaller than the random number', fg='red')
wrong_result.grid(row=4)
time.sleep(3)
wrong_result.destroy()
在第一个函数 (main) 中我调用线程,在第二个函数 (process) 中我想杀死 Thread。
【问题讨论】:
标签: python multithreading user-interface tkinter