一段时间后更改按钮的颜色tcl tk

一段时间后更改按钮的颜色tcl tk,tcl,tk,Tcl,Tk,我想在一段时间后更改单选按钮的颜色。 这是我试过的代码 set field1 [radiobutton .field1 -disabledforeground green -state "disabled" ] set field2 [radiobutton .field2 -disabledforeground red -state "disabled"] set field3 [radiobutton .field3 -disabledforeground green -state "dis

我想在一段时间后更改单选按钮的颜色。 这是我试过的代码

set field1 [radiobutton .field1 -disabledforeground green -state "disabled" ]
set field2 [radiobutton .field2 -disabledforeground red -state "disabled"]
set field3 [radiobutton .field3 -disabledforeground green -state "disabled"]

grid $field1 -row 0 -column 0
grid $field2 -row 0 -column 1
grid $field3 -row 0 -column 2

after 2000
$field1 configure -disabledforeground red
grid $field1 -row 0 -column 0
窗口仅在更改颜色后打开


如何在运行时动态地看到颜色的变化?

这似乎可以做到这一点。不过,我不确定这是不是最好的办法

set field1 [radiobutton .field1 -disabledforeground green -state disabled]
set field2 [radiobutton .field2 -disabledforeground red -state disabled]
set field3 [radiobutton .field3 -disabledforeground green -state disabled]

grid $field1 $field2 $field3

bind .field1 <Map> [list after 2000 {changeDisabledColor %W red}]

proc changeDisabledColor {w color} {
    $w configure -disabledforeground $color
}
set field1[单选按钮.field1-禁用地面绿色-禁用状态]
设置字段2[单选按钮.字段2-禁用地面红色-状态禁用]
设置字段3[单选按钮.字段3-禁用地面绿色-状态禁用]
网格$field1$field2$field3
bind.field1[2000之后的列表{changeDisabledColor%W红色}]
proc changeDisabledColor{w color}{
$w配置-禁用地面$color
}
对此有几点想法:

  • 在2000年之后
    表示命令在返回之前休眠两秒钟,在此期间,gui没有响应
    after 2000
    script表示命令在计划事件在两秒钟内发生后立即返回

  • 当窗口添加到要显示的窗口集中时,会触发该窗口的
    Map
    事件,但在计算其大小和位置之前。如果想要对窗口的外观进行一些配置,那么这是一个很好的事件

  • .field1
    的处理程序不必是对命令过程的调用:
    bind.field1[2000年后的列表{%W configure-disabledforeground red}]
    也应该可以工作。在我的示例中使用这样的调用通常是一个好主意,因为这通常更便于以后构建


  • 文档:,,,

    这似乎可以解决问题。不过,我不确定这是不是最好的办法

    set field1 [radiobutton .field1 -disabledforeground green -state disabled]
    set field2 [radiobutton .field2 -disabledforeground red -state disabled]
    set field3 [radiobutton .field3 -disabledforeground green -state disabled]
    
    grid $field1 $field2 $field3
    
    bind .field1 <Map> [list after 2000 {changeDisabledColor %W red}]
    
    proc changeDisabledColor {w color} {
        $w configure -disabledforeground $color
    }
    
    set field1[单选按钮.field1-禁用地面绿色-禁用状态]
    设置字段2[单选按钮.字段2-禁用地面红色-状态禁用]
    设置字段3[单选按钮.字段3-禁用地面绿色-状态禁用]
    网格$field1$field2$field3
    bind.field1[2000之后的列表{changeDisabledColor%W红色}]
    proc changeDisabledColor{w color}{
    $w配置-禁用地面$color
    }
    
    对此有几点想法:

  • 在2000年之后
    表示命令在返回之前休眠两秒钟,在此期间,gui没有响应
    after 2000
    script表示命令在计划事件在两秒钟内发生后立即返回

  • 当窗口添加到要显示的窗口集中时,会触发该窗口的
    Map
    事件,但在计算其大小和位置之前。如果想要对窗口的外观进行一些配置,那么这是一个很好的事件

  • .field1
    的处理程序不必是对命令过程的调用:
    bind.field1[2000年后的列表{%W configure-disabledforeground red}]
    也应该可以工作。在我的示例中使用这样的调用通常是一个好主意,因为这通常更便于以后构建

  • 文件: