这是我的程序中非常重要的一部分,我需要尽快整理出来,这样任何事情都会有很大的帮助。
我的程序由三个相互导入的模块组成。一个模块由我使用 tkinter 的用户界面组成。用户在画布上输入数据,该数据被发送到要处理的第二个程序,然后被发送到第三个模块,该模块包含我打算与用户逐步完成的算法。
“第一个”和“第三个”模块可以相互交互,并且在解释算法的某些时候我会改变画布的外观和界面上的一些文本。然后第三个模块应该暂停(为此我目前使用的是基本的睡眠方法),并等待(理想情况下它将等待用户按下用户界面上的“下一步”按钮)。正是在这一步中,我的界面决定要冻结。
有什么办法可以阻止我吗?
提前谢谢了。
编辑:我找到了解决此问题的方法。谢谢你的所有建议!
调用time.sleep()将停止你的程序做任何事情,直到它完成睡眠。您需要 Tkinter 继续处理事件,直到它运行您的代码的下一部分。
为此,请将代码的下一部分放在一个单独的函数中,并让 Tkinter 在它准备好时调用它。通常,您希望在用户触发它时(例如通过单击按钮)发生这种情况,因此您需要将其绑定到一个事件 ( docs )。如果您确实希望它在固定时间后发生,则可以.after()在任何 tkinter 小部件 ( docs )上使用该方法。
GUI 编程需要一点时间来习惯。您不会将代码编写为一系列一个接一个发生的事情,而是编写由用户执行的操作触发的单独代码位。
术语说明:如果你的 Python 文件相互导入,你有三个模块,但它仍然是一个程序。谈论“第一个程序”会让人感到困惑。