2015-06-09 29 views
0

我正在使用wm managewm forget停靠和取消鎖定來自Tk應用程序的幀。使用wm時丟失標題欄manage和wm忘記

當我解除框架f1時,有時視圖的標題欄不顯示。該框架沒有正確脫開,所以我無法在屏幕上處理它。

set f1 [winfo parent $w] 
# get state of Dock button 
set state [$T header state get DockBtn detach] 

if {!$state} { 
    puts " -- detach, undock, deconnect" 

    # detach the widget f1 
    grid forget  $f1 
    wm manage  $f1 
    wm protocol  $f1 WM_DELETE_WINDOW {} 
    event generate $f1 <<DetachedTab>> 

    set DockState 0 
} else { 
    if {$DockState == 0} { 
     puts " -- attach, dock" 
     wm forget $f1 

     # add to my panedwindow f1 
     $panedW add $f1 -width 300 

     set DockState 1 
    } 
} 
+0

我想說的是「酒吧」窗口的標題。 – Nirvan

+0

您應該編輯您的問題,而不是添加註釋,說明更改。這不是一個ttk問題 - 你不能管理ttk幀,只能tk幀。您應該嘗試製作一個能夠證明問題的最小示例。這一個是不完整的。哪個版本的Tk?你想要管理什麼小部件。 – patthoyts

回答

0

我懷疑的問題是,您使用grid forget從父分離幀轉換爲管理窗口時。但是,您使用$panedW add將其重新附加到主應用程序窗口。這表明你的父母實際上是一個窗口窗口小部件。這意味着經理不是網格,但panedwindow - 你可以使用winfo manager $f1來測試。如果出現這種情況,您的窗口管理就會發生衝突。你需要在函數的兩個部分保持一致。

+0

謝謝,是的這是一個panedwindow'puts [winfo manager $ f1]'= panedwindow。當我嘗試使用'wm忘記$ f1'或'$ panedW忘記$ f1'時。它更好,但在第四次點擊時失去了標題 – Nirvan

+0

你好,所以,我添加了'wm positionfrom $ f1 user#不要在任何地方訪問窗口,並讓用戶(而不是程序)在屏幕上管理它'和'wm sizeform $ f1 user'我的窗口始終有它的標題(所以在屏幕上管理它吧)。謝謝你,併爲我的英語不好而感到抱歉 – Nirvan