一段时间后更改按钮的颜色 tcl tk
changing the color of button after some time 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 "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
Window改变颜色后才打开
如何在运行时间内动态看到颜色的变化?
这似乎可以解决问题。不过,我不确定这是否是最好的方法。
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
}
对此的几点思考:
after 2000
表示命令在返回前休眠两秒,在此期间,gui 没有响应。 after 2000
script 表示命令 returns 在安排事件发生后立即在两秒内发生。
当 window 被添加到要显示的 windows 集合时,window 触发 Map
事件,但在此之前它的大小和位置是计算出来的。 AFAICT 如果想要对 window.
的外观进行一些配置,这是一个很好的事件。
.field1 <Map>
的处理程序不一定是对命令过程的调用:bind .field1 <Map> [list after 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 -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
Window改变颜色后才打开
如何在运行时间内动态看到颜色的变化?
这似乎可以解决问题。不过,我不确定这是否是最好的方法。
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
}
对此的几点思考:
after 2000
表示命令在返回前休眠两秒,在此期间,gui 没有响应。after 2000
script 表示命令 returns 在安排事件发生后立即在两秒内发生。当 window 被添加到要显示的 windows 集合时,window 触发
Map
事件,但在此之前它的大小和位置是计算出来的。 AFAICT 如果想要对 window. 的外观进行一些配置,这是一个很好的事件。
.field1 <Map>
的处理程序不一定是对命令过程的调用:bind .field1 <Map> [list after 2000 {%W configure -disabledforeground red}]
也应该有效。在我的示例中使用调用通常是个好主意,因为以后构建通常更方便。