python Tkinter中的简单加载屏幕

Dar*_*ius 2 python user-interface tkinter

我是Python初学者,尤其是tkinter。

我想制作一个简单的python脚本的“加载屏幕”,并在脚本结束后关闭。

但是制作一个窗口需要一个mainloop函数,这意味着它将无限循环或等待用户交互(或者我认为),并且它将消除“加载”屏幕的想法。

我尝试了一些操作,但最终显示了(放入加载屏幕)->(加载屏幕仍然有mainloop)->(由于等待而无法运行脚本)

我想要的详细信息是(放入加载脚本)->(运行脚本)->(脚本结束)->(加载屏幕销毁)

我在其他语言(尤其是Java)中有很多经验,但是Java可以声明一个框架->之后再运行其他内容->调用a frame.dispose()就是这样。对学习者有什么提示或建议吗?

编辑:脚本实际上是连接到数据库的图像处理算法,由于数据库可以扩展,而且可能比分配的时间更长,所以我不能只是放置定时的等待或睡眠。

Dro*_*nir 5

这些路线可能对您有用。这将创建窗口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.")
Run Code Online (Sandbox Code Playgroud)

编辑:在代码中添加了注释。