使用 wm manage 和 wm forget 时缺少标题栏
Missing title bar when using wm manage and wm forget
我正在使用 wm manage
和 wm 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 管理存在冲突。您需要在函数的两个部分保持一致。
我正在使用 wm manage
和 wm 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 管理存在冲突。您需要在函数的两个部分保持一致。