使用 Tkinter 如何創建一個小的軟體加載視窗?硬加載例如7秒然后自動打開軟體的視窗,例如home.py檔案。
如何在 7 秒后自動打開另一個視窗?謝謝
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)
uj5u.com熱心網友回復:
tkinter(類似于 Python 和其他語言中的所有其他 GUI)需要運行特殊loop才能作業。這個回圈創建視窗,從系統獲取滑鼠/鍵事件,將它們發送到小部件,并在視窗中重繪小部件,并一次又一次地這樣做。你需要root.mainloop()這個。
如果您使用,sleep()那么這loop將無法作業,您將看不到任何內容或它被凍結。但是tkinter可以用于在 7 秒后root.after(7000, func)運行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()反復運行功能來更改標簽中的文本和倒計時時間。
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()
編輯:
以 為例ttk.Progressbar。
import tkinter as tk # PEP8: `import *` is not preferred
import tkinter.ttk as ttk
# --- function ---
def func():
print('Now I can run something else')
root.destroy() # close window
# --- main ---
root = tk.Tk()
pb = ttk.Progressbar(root, maximum=7.001)
pb.pack(padx=50, pady=50) # padx=(50,0), pady=(50,50)
pb.start(1000) # start and change every 1000ms
#pb.step(-1) # move back one step (to 0) because `start()` moves automatically to `1`
root.after(7000, func) # function's name without `()`
root.mainloop()
uj5u.com熱心網友回復:
嘗試這樣的事情。然后繼續自己,很簡單
from your_folder import load.py
def wait_and_go():
if time.sleep(7):
load.py.form_load.py
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/369006.html
標籤:Python 蟒蛇-3.x 特金特 加载 tkinter 布局
下一篇:從csv檔案中的單元格中獲取數字
