使用 wm manage 和 wm forget 时缺少标题栏

Missing title bar when using wm manage and wm forget

我正在使用 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  
    }
}

我怀疑问题是您在转换为托管 window 时使用 grid forget 将框架与 parent 分离。但是你使用 $panedW add 到 re-attach 它到主应用程序 window。这表明您的 parent 实际上是一个窗格 window 小部件。这意味着管理器不是网格而是窗格 window - 你可以使用 winfo manager $f1 来测试它。如果是这种情况,您的 window 管理存在冲突。您需要在函数的两个部分保持一致。