使用wm manage时忘记了标题栏,忘记了wm

时间:2015-06-09 09:05:42

标签: tcl tk

我正在使用wm managewm forget来停靠和取消停靠Tk应用程序中的框架。

当我取消框架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  
    }
}

1 个答案:

答案 0 :(得分:0)

我怀疑问题是您在转换为托管窗口时使用grid forget从父级分离框架。但是,您使用$panedW add将其重新附加到主应用程序窗口。这表明你的父实际上是一个panedwindow小部件。这意味着经理不是网格而是窗口 - 您可以使用winfo manager $f1进行测试。如果是这种情况,则会出现冲突的窗口管理。你需要在函数的两个部分保持一致。