在tcl tk gui中隐藏和显示框架

时间:2011-10-18 06:07:12

标签: user-interface tcl tk

我想制作一个可以隐藏和显示的框架。问题是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这只是一个想法。

1 个答案:

答案 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