【发布时间】:2019-05-06 15:31:50
【问题描述】:
如何让函数fix() 中的tkinter 执行等到label's 文本被更改然后打印end。
当前工作:当我单击sub 按钮时,会创建新线程并执行for 循环。经过 10000000 次循环后,我的标签将更改为 9999999。但在我的标签更改之前,tkinter 会打印 end。
我尝试了t.join(),但它冻结了 GUI。
import tkinter as tk
from tkinter import ttk
import threading
root = tk.Tk()
label = tk.Label(text='vinoth')
label.pack()
def fix():
a=0
t = threading.Thread(target=count, args=(a,))
t.start()
#t.join()
print('end')
def count(a):
for i in range(0,10000000):
a=i
label['text'] = a
button = tk.Button(text='sub', command=fix)
button.pack()
dropdown = ttk.Combobox()
dropdown.pack()
root.mainloop()
【问题讨论】:
-
我将用多行代码替换
print('end')行,tkinter 多线程不支持这些。所以我必须在新线程中执行工作并回到主线程。请指导我如何暂停函数fix直到线程t完成。