Tcl 如何更改ttk::combobox的字体大小

Tcl 如何更改ttk::combobox的字体大小,tcl,tk,Tcl,Tk,我使用ttk小部件并希望更改ttk::combobox小部件的字体大小。正如您在示例中看到的,标签和按钮的字体大小会发生变化,但组合框的字体大小不会发生变化 font create MyFont -family Helvetica -size 12 -slant roman -weight normal ttk::style theme use default ttk::style configure TLabel -font MyFont ttk::style configure TButto

我使用ttk小部件并希望更改ttk::combobox小部件的字体大小。正如您在示例中看到的,标签和按钮的字体大小会发生变化,但组合框的字体大小不会发生变化

font create MyFont -family Helvetica -size 12 -slant roman -weight normal
ttk::style theme use default
ttk::style configure TLabel -font MyFont
ttk::style configure TButton -font MyFont
ttk::style configure TCombobox -font MyFont

set Liste {Anton Berta Caesar}

ttk::label .lb -text "Label"
ttk::combobox .cb -values $Liste
ttk::button .bt -text "Change Fontsize" -command {font configure MyFont -size 20}

pack .lb .cb .bt

顺便说一下,TMenubutton、ttk::entry和ttk::spinbox也存在同样的问题。

ttk::combobox小部件的字体直接作为小部件选项公开。在创建过程中或使用配置方法进行设置:

要更改下拉列表中使用的字体,您需要一些更神秘的东西,因为它在内部使用传统的Tk列表框,而不是在您创建组合框之前或在您第一次将其弹出之前设置样式,但这很棘手,因为选项“数据库”仅在Tk中创建小部件时读取:

option add *ComboboxPopdown.f.l.font MyFont

ComboboxPopdown.f.l.字体是神秘的部分。*ComboboxPopdown表示影响所有具有ComboboxPopdown类的小部件,ComboboxPopdown是由combobox绑定创建的临时弹出对话框的类,然后我们在该小顶级中选择.f.l小部件,即列表框,然后我们提供字体属性的覆盖,否则这将是默认值。

是的,这些东西肯定没有文档!我希望ttk::entry和ttk::spinbox也使用直接指定的字体。非常感谢。我认为,如果所有ttk小部件都以相同的方式运行,那将是一件好事。这可能是对下一版本tk的改进。option add*TCombobox*Listbox.font namedfont会更好。ttk小部件有一个设计限制,布局中只有一个元素可以寻址。因此,ttk::combobox中的大多数选项都分配给了输入框部分,而不是弹出框。由于没有ttk::listbox小部件,所以弹出框90%都是传统的Tk小部件。
option add *ComboboxPopdown.f.l.font MyFont