繁体   English   中英

如何使用 TKinter 创建一个加载 window 的软件?

[英]How to create a software loading window with TKinter?

使用 Tkinter 如何创建加载 window 的小软件? 一个 window 硬加载例如 7 秒然后自动打开软件,例如 home.py 文件。

如何在 7 秒后自动打开另一个 window? 谢谢

from tkinter import *
from tkinter import ttk
import tkinter as tk
import time

root =  Tk()
root.title("load")
root.geometry("300x300")
root.state("normal")

lbl = Label(root, text="EXAMPLE", font=("Calibri 15 bold"))
lbl(x=40, y=40)


def wait_and_go():
    time.sleep(7)
    

尝试这样的事情。 然后继续自己,很简单

from your_folder import load.py

def wait_and_go():
    if time.sleep(7):
        load.py.form_load.py

tkinter (类似于 Python 和其他语言中的所有其他 GUI)需要运行特殊loop才能工作。 此循环创建 window,从系统获取鼠标/键事件,将它们发送到小部件,并在 window 中重绘小部件,并且它一次又一次地这样做。 为此,您需要root.mainloop()

如果您使用sleep() ,则此loop将无法工作,您将看不到任何东西,或者它被冻结了。 但是tkinter可以使用root.after(7000, func) ) 在 7 秒后运行func()并且这个func()应该做你想做的。

import tkinter as tk  # PEP8: `import *` is not preferred

# --- function ---

def func():
    print('Now I can run something else')
    #root.destroy()
    
# --- main ---

root = tk.Tk()

lbl = tk.Label(root, text="EXAMPLE")
lbl.pack(padx=50, pady=50)  # padx=(50,0), pady=(50,50)

root.after(7000, func)  # function's name without `()`

root.mainloop()

您还可以使用after()反复运行 function 可以更改 label 中的文本和倒计时时间。

import tkinter as tk  # PEP8: `import *` is not preferred

# --- function ---

def func():
    print('Now I can run something else')
    root.destroy()  # close window

def update_label():
    global counter  # inform function to assign new value to external/global variable
    
    counter -= 1
    
    lbl['text'] = f'COUNTDOWN: {counter} s'
    
    if counter > 0:
        root.after(1000, update_label)
    
# --- main ---

counter = 7  # this is global variable 

root = tk.Tk()

lbl = tk.Label(root, text=f'COUNTDOWN: {counter} s')
lbl.pack(padx=50, pady=50)  # padx=(50,0), pady=(50,50)

root.after(7000, func)  # function's name without `()`

root.after(1000, update_label)  # function's name without `()`
#update_label()

root.mainloop()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM