我正在尝试从活动窗口中删除Tkinter进度条小部件(在使用Tkinter的GUI窗口初始化之后)。我正在为我的窗口使用Tkinter Frame。我已将进度条初始化为pb,如下所示。
pb = ttk.Progressbar(root,orient ="horizontal",length = 540, mode ="determinate")
然后我尝试了两种不同的方法来摆脱进度条。下面的行导致窗口冻结并在初始化GUI后尝试使用时停止响应。
pb.pack_forget()
下面的行只会导致进度条的中间部分消失,但您仍然可以看到它的两面。
pb.destroy()
在Frame初始化之后,有什么方法可以让这个小部件消失吗?
答案 0 :(得分:5)
您的问题的具体答案是pack_forget
,grid_forget
或grid_remove
是您想要使窗口小部件暂时不可见的内容。您选择哪一个取决于您是否使用网格或包,以及您是否希望网格记住它的位置,以便稍后将其放回同一位置。
destroy
是您想要彻底销毁小部件的内容。
如果使用得当,这些方法都不会导致程序冻结。如果没有看到您的代码,就无法知道问题的根本原因是什么。
答案 1 :(得分:0)
对不起,我的英语不好。 这段代码对我有用。我只需遵循 Oakley的说明。
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()
。所以之后
完成加载后,它将从应用程序主窗口中消失。
谢谢您,布莱恩·奥克利先生。