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

How to change font size of ttk::combobox

我使用 ttk-widgets 并想更改 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 小部件的字体直接显示为小部件选项。在创建时设置(或使用 configure 方法):

ttk::combobox .cb -values $Liste -font MyFont

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

option add *ComboboxPopdown.f.l.font MyFont

*ComboboxPopdown.f.l.font是神秘的部分。 *ComboboxPopdown 表示要影响所有 class 为 ComboboxPopdown 的小部件(这是由组合框绑定创建的临时弹出对话框的 class),然后我们 select 那个小顶层中的 .f.l 小部件,它是列表框,然后我们为 font 属性 提供覆盖,否则它将是默认值。