我使用Tkinter编写了一个gui类:
def start_gui():
def do_some_task():
dosometask
def do_some_task2():
dosometask2
ttk.Button(mainframe, text="task1", command=do_some_task).grid(column=1, row=3, sticky=W)
ttk.Button(mainframe, text="task2", command=do_some_task2).grid(column=2, row=3, sticky=W)
if __name__ == "__main__":
start_gui()
当我按下其中一个按钮时,GUI会冻结,直到任务完成。如何使用线程来防止这种情况,使两个按钮始终可用?
答案 0 :(得分:0)
tkinter是单线程的。当一个函数正在运行时,它无法为事件提供服务,包括重绘窗口的请求等事件。
如果您的按钮调用的函数需要花费大约几百毫秒左右,那么您需要在单独的线程或进程中运行它们才能使tkinter响应。