簡體   English   中英

有沒有辦法在不打包的情況下將 `tkinter.Toplevel` 分配給變量?

[英]Is there any way to assign `tkinter.Toplevel` to a variable without packing it?

當您調用tkinter.Toplevel或將其分配給變量時,它會立即打包(顯示在屏幕上)。 這個概念背后的想法是,將有多個小部件放置在頂層,這些小部件將需要一些時間來打包(准備好)。 所以,我必須為那些 tkinter.Toplevel 的小部件聲明一個主tkinter.Toplevel ,但如果我首先調用它或將它分配給一個變量,它會自動在屏幕上顯示為空白。 我可以在頂級 window 准備好后將其與其中的小部件打包在一起嗎?

from tkinter import *
import time
import threading

def func():
    top_level = Toplevel(root)
    label_text = 0
    button_text = 0
    for i in range(10):
        time.sleep(1)
        label_text += 1
        button_text += 2

    label = Label(top_level, text=label_text)
    button = Button(top_level, text=button_text)

    label.pack(pady=20, padx=20)
    button.pack(pady=20, padx=20)

root = Tk()

threading.Thread(target=func).start()

root.mainloop()

packed不是正確的術語(正確的術語是“映射”),但如果您不想讓它出現,您可以調用withdraw / wm_withdraw以防止它出現在屏幕上。

top_level = Toplevel(root)
top_level.withdraw()

當你想讓它出現時,調用deiconify / wm_deiconify

top_level.deiconify()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM