我必须使用组合框代码更改标签文本的字体。 这是我的组合框:
variable varLabel3
variable varCombobox1 [list Normal Italic Bold ]
ttk::combobox $base.combobox#1 \
-values $varCombobox1
set c [.combobox#1 get]
例如,如果我选择Italic
,标签中的文本(我的程序中的.label#1
)就会倾斜。我怎样才能做到这一点?
最佳答案
ttk::combobox
发送 <<ComboboxSelected>>
当虚拟事件的值发生变化时,您可以使用组合框的 get
方法来找出选择的内容,然后采取行动来配置您在标签中使用的命名字体。根本不需要太多代码。
font create myFont -family Times -size 42 -weight normal -slant roman
pack [label .l -text "Sample Text" -font myFont]
set values [list Normal Italic Bold ]
pack [ttk::combobox .combo -values $values]
bind .combo <<ComboboxSelected>> {
switch [%W get] {
"Normal" { font configure myFont -weight normal -slant roman }
"Italic" { font configure myFont -weight normal -slant italic }
"Bold" { font configure myFont -weight bold -slant roman }
}
}
您可能还想设置组合框的初始值并使其不能直接作为文本进行编辑:
.combo set [lindex $values 0]
.combo configure -state readonly
其他一切都只是围绕事物的命名方式发生变化。
关于fonts - 如何使用组合框项目 tcl tk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26945779/