【发布时间】:2018-06-11 04:51:54
【问题描述】:
我用 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 会冻结,直到任务完成。如何使用线程来防止这种情况,使两个按钮始终可用?
【问题讨论】:
-
就时间而言,它们会冻结多长时间?
-
直到函数完成他的工作并返回
-
您的计算机需要多长时间?
-
它在很长的字符串中进行一些文本搜索
-
使用模块
threading运行dosometask然后它不会阻塞mainloop()也不会冻结GUI。或者您可以尝试在dosometask中定期使用root.update(),这样它会强制mainloop执行一个循环并刷新GUI。
标签: python user-interface tkinter