[英]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_forget
, grid_forget
或grid_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.