【发布时间】:2021-06-16 04:39:59
【问题描述】:
我正在开发的 Python 应用程序从网上加载了一个较大的初始化文件。这个过程需要很长时间,以至于用户在窗口弹出之前重新启动应用程序。我正在寻找的是一种在应用程序加载网络文件之前弹出打开应用程序 tkinter 窗口(有或没有加载消息)的方法。这将使用户知道正在发生的事情,并防止他们重新启动应用程序。
换句话说,我如何在调用 mainloop() 打开窗口之后,但在用户界面空闲等待点击之前自动运行一些代码?
我目前用来弹出窗口的代码:
winWid = 650
winHei = 390
window = tkinter.Tk()
window.geometry(str(winWid) + "x" + str(winHei))
window.title("AppTitle")
window.configure(bg="#FFFFDC")
# Load Initialization file - goal is to have this automatically happen after window opens
window.mainloop()
编辑: 启动一个初始化线程可能会解决问题,但是当我想要做的只是用网络文件的内容填充 gui 中的一个列表时,这似乎过于激烈了。
【问题讨论】:
-
我建议使用两个线程,但我不认为
tkinter会在两个不同的线程之间进行通信。 -
听起来你需要看看threading
-
这不是程序最初使用 splashscreens 的原因 - 你可以在另一个线程加载配置时出现一个小通知,然后关闭并进入主应用程序跨度>
-
添加第二个线程似乎对我的小应用程序来说是一个激进的措施。我希望有一些更直接的东西。
-
尝试将加载任务放在一个函数中,例如
loading_configs()并在window.mainloop()之前致电window.after(100, loading_configs)。请注意,如果loading_configs()是一项耗时的任务,它仍然会阻止您与窗口进行交互。
标签: python user-interface tkinter