【问题标题】:How can I make Tcl/Tk buttons behave like radiobuttons?如何使 Tcl/Tk 按钮表现得像单选按钮?
【发布时间】:2013-01-22 23:28:30
【问题描述】:

根据 ActiveTcl 8.5 文档:
ttk::radiobutton 小部件在组中用于显示或更改一组互斥选项。单选按钮链接到一个 Tcl 变量,并有一个关联的值;单击单选按钮时,它会将变量设置为其关联的值。
还有更一般的定义:
您使用单选按钮进行互斥设置。单击一个会弹出任何其他已按下的按钮,就像在旧汽车收音机上一样。

我真的更喜欢使用按钮的外观而不是单选按钮。如何在一组按钮中实现单选按钮的相同行为?
我在http://wiki.tcl.tk/17899 上发现了关于切换按钮的信息,但这些行为更像是检查按钮。

任何真知灼见。谢谢

【问题讨论】:

  • 如果我可以使用标签而不是按钮来充当单选按钮,我正在徘徊。

标签: button radio-button tcl tk


【解决方案1】:

您可以设置按钮的relief 以保持其凹陷。

set colours {red blue green}
foreach c $colours {
    pack [button .$c -text $c -command [list pushed $c]]
}

proc pushed colour {
    puts $colour
    set label [.$colour cget -text]
    foreach c $::colours {
        .$c configure -relief [expr {$c eq $label ? "sunken" : "raised"}]
    }
}

【讨论】:

  • 谢谢,效果很好。我设法通过添加以下行来修改您的脚本以与标签一起使用:bind .$c "pushed $c"
【解决方案2】:

将单选按钮的 -indicatoron 属性设置为 false。

【讨论】:

    猜你喜欢
    • 2021-05-20
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多