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

use*_*134 5 user-interface tk-toolkit tcl

我想制作一个可以隐藏和显示的框架.问题是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
    }
}
Run Code Online (Sandbox Code Playgroud)

在此过程中,$top.frame1并且$top.frame2之前已填充并且$i因此切换值$top.frame1并且$top.frame2在调用此proc时交替显示.所有,我想知道的是,是否存在并且命令unpack可以帮助我做到这一点?顺便说一下,unpack这只是一个想法.

Jac*_*son 9

我认为包忘记命令可能是您正在寻找的:

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
Run Code Online (Sandbox Code Playgroud)