Tcl 使用[pack info]隐藏/显示带有菜单检查按钮的小部件

Tcl 使用[pack info]隐藏/显示带有菜单检查按钮的小部件,tcl,tk,Tcl,Tk,我想保存要隐藏的帧的信息,使其不受菜单选中按钮的影响。我得到以下错误: extra option "-in .mainframe -anchor center -expand 0 -fill x -ipadx 0 -ipady 0 -padx 0 -pady 0 -side top" (option with no value?) while executing "pack $w $winfo" (procedure "cmd_toggle" line 9) invoke

我想保存要隐藏的帧的信息,使其不受菜单选中按钮的影响。我得到以下错误:

extra option "-in .mainframe -anchor center -expand 0 -fill x -ipadx 0 -ipady 0 -padx 0 -pady 0 -side top" (option with no value?) while executing "pack $w $winfo" (procedure "cmd_toggle" line 9) invoked from within "cmd_toggle .mainframe.l1" (menu invoke) 谢谢你抽出时间


Damien

不,您使用的不是
pack info
错误的方式,而是
pack
本身
pack$w
需要一个参数列表,而您只提供了一个它不知道的参数

解决方案是,在
{*}
操作符的帮助下,将
$winfo
分解成一个参数列表。把线路改成这个

pack $w {*}$winfo
给出了期望的结果

如果不使用checkbutton(需要一个变量),可以使用
winfo ismapped$w
来避免全局
state
变量


顺便说一句:“状态”按钮显示的是反向行为。您应该在开始时将其设置为true,并反转if条件。然后,如果已设置,则会显示标签。这是正确的,因为变量值更改后,命令被调用,因此可以更改命令中的值。

否,您使用的不是
pack info
错误,而是
pack
本身
pack$w
需要一个参数列表,而您只提供了一个它不知道的参数

解决方案是,在
{*}
操作符的帮助下,将
$winfo
分解成一个参数列表。把线路改成这个

pack $w {*}$winfo
给出了期望的结果

如果不使用checkbutton(需要一个变量),可以使用
winfo ismapped$w
来避免全局
state
变量


顺便说一句:“状态”按钮显示的是反向行为。您应该在开始时将其设置为true,并反转if条件。然后,如果已设置,则会显示标签。这是正确的,因为变量值更改后,命令被称为,因此可以更改命令中的值。

完美!谢谢你的回答和额外的提示。太好了!谢谢你的回答和额外的提示。