Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python Tkinter中的简单加载屏幕_Python_User Interface_Tkinter - Fatal编程技术网

python Tkinter中的简单加载屏幕

python Tkinter中的简单加载屏幕,python,user-interface,tkinter,Python,User Interface,Tkinter,我是一名python初学者,尤其是tkinter 我想制作一个简单python脚本的“加载屏幕”,并在脚本结束后关闭 但是创建一个窗口需要一个mainloop函数,这意味着它将无限循环或等待用户交互(我认为是这样),并且它将消除“加载”屏幕的想法 我尝试了一些东西,但结果是(放置加载屏幕)->(加载屏幕仍有mainloop)->(由于等待,无法运行脚本) 我想要的详细信息是(放置加载脚本)->(运行脚本)->(脚本结束)->(加载屏幕销毁) 我在其他语言方面有很多经验,特别是Java,但是Jav

我是一名python初学者,尤其是tkinter

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

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

我尝试了一些东西,但结果是(放置加载屏幕)->(加载屏幕仍有
mainloop
)->(由于等待,无法运行脚本)

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

我在其他语言方面有很多经验,特别是Java,但是Java可以声明一个框架->之后运行其他东西->调用
frame.dispose()
,就这样。对学习者有什么建议吗

编辑:这个脚本实际上是一个连接到数据库的图像处理算法,我不能只进行定时等待或睡眠,因为数据库可以扩展,并且可能需要比分配的时间更长的时间


这方面的东西可能适合你。这将创建一个窗口
root
,并定义一个函数
task
,该函数将销毁
root
,就像它最后做的一样。在本例中,
task
只休眠两秒钟,但您可以用想要运行的任何代码替换该
sleep
调用

task
函数放入带有
root.after(200,task)
的主循环事件队列中。这意味着代码将首先创建
root
窗口,等待200毫秒,然后调用
task()
,它将休眠两秒钟并销毁该窗口。至少在本例中,您需要200毫秒的延迟,以便主循环有足够的时间在
sleep
调用停止所有操作之前绘制窗口(数字可能会有所不同;如果窗口绘制不正确,则增加该数字)


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

您需要使用或模块。感谢您的回复,但我真的希望使其尽可能动态,避免出现计时场景。我不太确定您的意思,但这并不取决于我的示例中使用的任何计时。
sleep
调用只是一个虚拟的计算替换,在此期间您希望窗口保持打开状态。排队过程中的200毫秒延迟只是为了给tk一些时间来渲染窗口,因为
睡眠
会挂起它。它起作用了。我必须学会如何使用它,但一开始我并不理解它。谢谢
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.")