TCL灰色按钮

时间:2013-07-17 19:03:40

标签: tcl

我一直在查看几个在线资源,试图在选择另一个按钮时让我的支票显示为灰色。然而,在我所有的尝试中,我似乎无法让它发挥作用。

以下是工作中的示例: 3个复选框名为chkAll,chkBalanced和chkFXO。假设选择chkAll并处于活动状态然后chkBalanced,然后取消选中chkFXO。我试图使用一个if语句来查看chkAll的状态,但它抱怨在块的条件部分中有状态问题。我应该考虑使用变量,如果是这样,我该如何实现它们?我知道checkbuttons有一个变量选项,但我也不知道如何使用它

2 个答案:

答案 0 :(得分:1)

如果您尝试进行独家选择,则不应使用支票按钮。你所描述的是无线电按钮的行为。

要使用无线电按钮,您可以创建两个或更多,并为它们提供相同的变量。然后,您将只能一次选择一个。

foreach value {chkAll chkBalanced chkFXO} {
    radiobutton .rb-$value -text $value -variable myvar \
       -justify left -value $value
    pack .rb-$value -side top -fill x -anchor w
}

答案 1 :(得分:0)

如果你只想要三个小部件提供相互排斥的选择,为了善良,使用radiobuttons 来完成任务。这就是他们的目的。这就是用户的期望。 (更好的是,将它们放在一个labelframe中;这样可以提高可用性,而且不费吹灰之力。)

如果你还有其他事情需要根据一个检查按钮“打开和关闭”小部件,你可以通过在checkbutton的{{1}引用的变量上写一个trace来做到这一点。 } 选项。根据变量的值,该跟踪应该在其触发时启用(更改为-variable)或禁用(更改为-state normal)其他小部件。

-state disabled

这种事情可能变得非常复杂,并产生非常好的GUI。您也可以将它与radiobuttons混合使用(通过适当的调整,因为状态变量不再是布尔值)。但是,不要仅仅为了一个简单的选择一组;使用直接的支票按钮。