python Tkinter按钮在等待时冻结

问题描述 投票:1回答:1

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

python user-interface tkinter
1个回答
0
投票

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

如果你的按钮调用的函数花费的时间超过几百毫秒左右,你需要在一个单独的线程或进程中运行它们,以便tkinter能够响应。

© www.soinside.com 2019 - 2024. All rights reserved.