2013-07-16 74 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是你想要打電話,如果你想從字面上摧毀小部件。

正確使用時,這些方法都不會導致程序凍結。沒有看到你的代碼,就不可能知道問題的根本原因是什麼。

相關問題