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