簡體   English   中英

Python中的Tkinter-從活動窗口中刪除小部件

[英]Tkinter in Python - Remove widget from active window

我正在嘗試從活動窗口中刪除Tkinter進度欄小部件(使用Tkinter的GUI窗口已初始化之后)。 我正在為窗口使用Tkinter框架。 我已經將進度條初始化為pb,如下所示。

pb = ttk.Progressbar(root,orient ="horizontal",length = 540, mode ="determinate")

然后,我嘗試了兩種不同的方法來擺脫進度欄。 初始化GUI后,當我嘗試使用窗口時,下面的行導致窗口凍結並停止響應。

pb.pack_forget()

下面的行僅使進度條的中間部分消失,但是您仍然可以看到它的兩側。

pb.destroy()

框架初始化后,有什么方法可以使此小部件消失嗎?

問題的具體答案是,如果要使小部件暫時不可見,則需要pack_forgetgrid_forgetgrid_remove 選擇哪一個取決於您使用的是網格還是打包,以及是否要讓網格記住它的位置,以便以后將其放回原處。

destroy是你想要的,如果你想從字面上摧毀小部件叫什么。

如果使用得當,這些方法都不會導致程序凍結。 如果不看代碼,就不可能知道問題的根本原因是什么。

對不起,我的英語不好。 這段代碼對我有用。 我只是遵循奧克利的指示。

def progressBar(*args, **kwargs):

def progress(currentValue):
    progressbar["value"] = currentValue

maxValue = 100

progressbar = ttk.Progressbar((kwargs), orient="horizontal", length=150, mode="determinate", takefocus=True)
progressbar.pack(side=tk.BOTTOM)

currentValue = 0
progressbar["value"] = currentValue
progressbar["maximum"] = maxValue

divisions = 10
for i in range(divisions):
    currentValue = currentValue + 10
    progressbar.after(500, progress(currentValue))
    progressbar.update()  # Force an update of the GUI

progressbar.destroy()

因此,我只是在加載器循環之外嘗試了progressbar.destroy() 因此,完成加載后,它將從應用程序主窗口中消失。

謝謝, 布萊恩·奧克利先生。

暫無
暫無

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

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