python Tkinter按钮在等待时冻结

时间:2017-12-31 18:13:03

标签: python user-interface tkinter

我使用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会冻结,直到任务完成。如何使用线程来防止这种情况,使两个按钮始终可用?

1 个答案:

答案 0 :(得分:0)

tkinter是单线程的。当一个函数正在运行时,它无法为事件提供服务,包括重绘窗口的请求等事件。

如果您的按钮调用的函数需要花费大约几百毫秒左右,那么您需要在单独的线程或进程中运行它们才能使tkinter响应。