2013-07-16 59 views
1

我试图从活动窗口中删除Tkinter进度条小部件(在使用Tkinter的GUI窗口初始化后)。我为我的窗口使用了Tkinter框架。我已经将进度条初始化为pb,如下所示。Python中的Tkinter - 从活动窗口中删除小部件

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

然后我试过两种不同的方法来摆脱进度条。下面一行会导致窗口冻结,并在GUI初始化后尝试使用它时停止响应。

pb.pack_forget() 

下面这行只会导致进度条的中间部分消失,但您仍然可以看到它的两面。

pb.destroy() 

有没有什么办法可以让这个小部件在帧初始化后消失?

+0

我觉得很难相信调用'pack_forget()'会导致窗口冻结。你是否在说如果你有一个工作程序,并且放在这一行中,程序就会冻结?您是否偶然在同一帧中使用包和网格? –

+0

你是对的 - 问题是我也在使用网格配置(甚至没有意识到)。我删除了这些,现在'pack_forget()'不会导致应用程序冻结 - 但是我得到与使用destroy()相同的错误 - 部分进度条消失。消失的部分似乎与包含其下的文本的标签的宽度完全相同... –

+0

是事件循环运行吗? “进度条的一部分消失”听起来像事件循环没有运行,所以屏幕重绘请求没有被遵守。 –

回答

4

您的问题的具体答案是,pack_forget,grid_forgetgrid_remove是你想要的,如果你想使一个小部件暂时隐形。您选择哪一个取决于您是使用网格还是包装,以及您是否希望网格记住它的位置,以便您稍后可以将它放回到同一位置。

destroy是你想要打电话,如果你想从字面上摧毁小部件。

正确使用时,这些方法都不会导致程序冻结。没有看到你的代码,就不可能知道问题的根本原因是什么。

相关问题