Dar*_*ius 2 python user-interface tkinter
我是Python初学者,尤其是tkinter。
我想制作一个简单的python脚本的“加载屏幕”,并在脚本结束后关闭。
但是制作一个窗口需要一个mainloop
函数,这意味着它将无限循环或等待用户交互(或者我认为),并且它将消除“加载”屏幕的想法。
我尝试了一些操作,但最终显示了(放入加载屏幕)->(加载屏幕仍然有mainloop
)->(由于等待而无法运行脚本)
我想要的详细信息是(放入加载脚本)->(运行脚本)->(脚本结束)->(加载屏幕销毁)
我在其他语言(尤其是Java)中有很多经验,但是Java可以声明一个框架->之后再运行其他内容->调用a frame.dispose()
就是这样。对学习者有什么提示或建议吗?
编辑:脚本实际上是连接到数据库的图像处理算法,由于数据库可以扩展,而且可能比分配的时间更长,所以我不能只是放置定时的等待或睡眠。
这些路线可能对您有用。这将创建窗口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)
编辑:在代码中添加了注释。
归档时间: |
|
查看次数: |
2073 次 |
最近记录: |