如何修改Tkinter中的默认字体?

2024-01-28

我正在使用 Tkinter 在 Python2.7 中开发 GUI,但遇到了一个烦人的问题。

我想定义所有小部件使用的默认字体,如果可能的话在一行中。 此行仅修改 Entry 或 ComboBox 中使用的字体:

root.option_add("*Font", "courier 10")

但不是示例中复选框的标签。

我发现预定义字体存在“TkDefaultFont”,但我无法更改其配置:

print tkFont.Font(font='TkDefaultFont').configure()
tkFont.Font(font='TkDefaultFont').config(family='Helvetica', size=20)
tk.TkDefaultFont = tkFont.Font(family="Helvetica",size=36,weight="bold")
print tkFont.Font(font='TkDefaultFont').configure()

prints:

{'family': 'DejaVu Sans', 'weight': 'normal', 'slant': 'roman', 'overstrike': 0, 'underline': 0, 'size': -12}
{'family': 'DejaVu Sans', 'weight': 'normal', 'slant': 'roman', 'overstrike': 0, 'underline': 0, 'size': -12}

(没有错误,但没有任何改变!)

我做错了什么?


Tkinter 有几种内置字体 --TkDefaultFont, TkTextFont, TkFixedFont等等,这些都是所谓的“命名字体”。它们非常强大——改变其中之一,所有使用它们的小部件也会改变。

要更改其中一种字体,请获取它的句柄,然后使用configure方法来改变。例如,要更改大小TkDefaultFont到 48 你会这样做:

default_font = tkFont.nametofont("TkDefaultFont")
default_font.configure(size=48)

就是这样。你不需要做任何其他事情——所有使用的东西TkDefaultFont会立即注意到变化。

在你的问题中你暗示你想要TkDefaultFont一切都可以使用的字体。为此,您可以使用option_add正如你所展示的:

root.option_add("*Font", default_font)

但请注意,option_add只影响创建的小部件after你打过电话option_add,因此您需要在创建任何其他小部件之前执行此操作。

另请注意,您可以将字体名称指定为option_add如果您不想先获取字体实例(即:root.option_add("*Font", "TkDefaultFont")).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何修改Tkinter中的默认字体? 的相关文章

随机推荐