我是初学蟒蛇学习者,特别是tkinter。
我想制作一个简单python脚本的“加载屏幕”,并在脚本结束后关闭。
但是创建一个窗口需要一个mainloop
函数,这意味着它将无限循环或等待用户交互(或者我认为),它将消除“加载”屏幕的想法。
我尝试了一些东西,但最终得到了(放入载入画面) - > (加载屏幕仍有mainloop
) - > (因等待而无法运行脚本)
我想要的是(放置加载脚本) - > (运行脚本) - > (脚本结束) - > (载入画面销毁)
我在其他语言尤其是Java方面有很多经验,但java只能声明一个框架 - >之后运行其他东西 - >拨打frame.dispose()
即可。对学习者的任何提示或建议?
编辑:该脚本实际上是一个连接到数据库的图像处理算法,我不能只是进行定时等待或休眠,因为数据库可以扩展,并且可能需要比分配的时间更长的时间。
答案 0 :(得分:2)
这些方面的东西可能适合你。这将创建窗口root
,并定义一个函数task
,它将root
作为最后的事情进行销毁。在此示例中,task
只会休眠两秒钟,但您可以使用您要运行的任何代码替换sleep
调用。
您将task
函数放入带有root.after(200, task)
的主循环事件队列中。这意味着代码将首先创建root
窗口,等待200毫秒,然后调用task()
,它会休眠两秒并销毁窗口。至少对于这个例子,你需要200毫秒的延迟,以便主循环有足够的时间在sleep
调用停止一切之前绘制窗口(数字可能与你不同;如果窗口没有,则增加它画得恰到好处。)
import tkinter as tk
from time import sleep
def task():
# The window will stay open until this function call ends.
sleep(2) # Replace this with the code you want to run
root.destroy()
root = tk.Tk()
root.title("Example")
label = tk.Label(root, text="Waiting for task to finish.")
label.pack()
root.after(200, task)
root.mainloop()
print("Main loop is now over and we can do other stuff.")
编辑:在代码中添加了评论。