python – 在程序休眠时停止tkinter窗口冻结

这是我的计划中非常重要的一部分,我需要尽快整理出来,所以任何事都会有很大的帮助.

我的程序由三个相互导入的模块组成.一个模块由我使用tkinter的用户界面组成.用户在画布上输入数据,该画布被发送到要处理的第二程序,然后被发送到第三模块,该第三模块包含我打算与用户一起执行的算法.

“第一”和“第三”模块可以相互交互,并且在解释算法的某些点期间,我改变了画布的外观和界面上的一些文本.然后第三个模块应暂停(我目前正在使用基本的睡眠方法),并等待(理想情况下,它将等待用户按下用户界面上的“下一步”按钮).在此步骤中,我的界面决定要冻结.

有什么办法可以阻止这个吗?

提前谢谢了.

编辑:我找到了解决这个问题的方法.谢谢你的所有建议!

调用time.sleep()会阻止程序执行任何操作,直到完成睡眠.您需要Tkinter继续处理事件,直到它应该运行代码的下一部分.

为此,将代码的下一部分放在一个单独的函数中,并让Tkinter在它准备好时调用它.通常,您希望在用户触发它时发生这种情况(例如,通过单击按钮),因此您需要将其绑定到事件(docs).如果您确实希望它在固定时间之后发生,则可以在任何tkinter小部件(docs)上使用.after()方法.

GUI编程需要一些习惯.您不会将一系列事件一个接一个地编码,您编写单独的代码,这些代码由用户执行的操作触发.

术语说明:如果你的Python文件相互导入,你有三个模块,但它仍然是一个程序.谈论“第一个程序”会让人感到困惑.

https://stackoverflow.com/questions/9250624/stop-tkinter-window-from-freezing-while-program-is-sleeping

转载注明原文:python – 在程序休眠时停止tkinter窗口冻结