TCL:如何在检查某些条件时改变radiobutton的颜色

时间:2016-07-25 10:10:52

标签: tcl tk

我想在检查目录中是否存在某些文件后更改radiobutton的颜色,但无法实现它,因为不确定configure -background color是否适用于单选按钮。

以下是示例代码

set topdir $path

ttk::checkbutton .top.d.z.$t -text $v -variable s -command [list select_lib $v $elem $g $t] $t] \
        -value $v.kill -padx 2 -pady 2 
if {file exist $path/rc.log == 1} {
    #change color to green in  widget
} else {
    # retain same background of radio button
}

请建议任何方法来实现这一目标。

1 个答案:

答案 0 :(得分:1)

好的,感谢RLE和Brad Lanam在维基上对ttk风格的描述。

创建并定位radiobutton:

pack [ttk::radiobutton .b -text foo]

基于默认的TRadiobutton样式创建自定义样式,背景设置为绿色:

ttk::style configure greenstyle.TRadiobutton -background green

将此样式应用于radiobutton以将背景变为绿色:

.b configure -style greenstyle.TRadiobutton

恢复正常背景颜色:

.b configure -style TRadiobutton

在主题小部件上更改颜色等时,可以决定更改

  • 默认样式(在本例中为TRadiobutton):这会影响所有相同类型的小部件
  • 一个次级,如本例所示(greenstyle.TRadiobutton
  • 克隆样式(请参阅here示例)
  • 一种临时构建的样式(遵循Windows上C:\Tcl\lib\tk8.6\ttk目录中的示例):仅限专家。

由Brad Lanam编辑:

有关ttk :: radiobutton颜色的更多信息

一些定义:

  • 背景:一切背后的整体背景颜色
  • 前景:radiobutton标签上文字的颜色
  • 指示灯颜色:指示灯的颜色。

可以使用ttk::style命令设置这些选项:

ttk::style configure greenstyle.TRadiobutton -indicatorcolor lightgreen
ttk::style map greenstyle.TRadiobutton -indicatorcolor \
    [list selected darkgreen pressed white]

如上所述应用设置和重置。

文档: packttk::radiobutton (widget)Introduction to the Tk theme engineChanging Widget Colors (ttk::radiobutton)