修改Python Tkin中的默认字体

2024-04-23 07:05:01 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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()

返回:

{'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}

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

我做错什么了?


Tags: sizeconfigure字体familyprintnormalfontweight
1条回答
网友
1楼 · 发布于 2024-04-23 07:05:01

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

要更改其中一种字体,请获取该字体的句柄,然后使用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只影响在您调用了option_add之后创建的小部件,因此您需要在创建任何其他小部件之前执行此操作。

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

相关问题 更多 >