我想制作一个可以隐藏和显示的框架。问题是Tk没有提供任何hide / unpack命令。我使用vtcl并且有一个选项“Window hode”,它只隐藏顶层的窗口。现在我想隐藏一个框架,然后再次显示相同的框架。它可以被认为是拆开一个框架并显示另一个框架。我的代码可以是这样的:
proc show1hide2 { } {
global i top
if {$i == 1} {
unpack $top.frame1
pack $top.frame2
set i 0
} else {
unpack $top.frame2
pack $top.frame1
set i 1
}
}
在此过程中,先前填充了$top.frame1
和$top.frame2
,并且$i
的值被切换,因此当此触发时,$top.frame1
和$top.frame2
会交替显示调用。所有,我想知道的是,是否存在和unpack
之类的命令可以帮助我做到这一点?顺便说一下,unpack
这只是一个想法。
答案 0 :(得分:9)
我认为 pack forget 命令可能就是你要找的东西:
proc toggle {} {
global state
if {$state == 1} {
pack forget .r
pack .g -side bottom -fill x
set state 0
} else {
pack forget .g
pack .r -side bottom -fill x
set state 1
}
}
set state 1
# Make the widgets
label .r -text "Red Widget" -bg red
label .g -text "Green Widget" -bg green
button .tog -text "Toggle" -command toggle
# Lay them out
pack .tog
pack .r -side bottom -fill x