小编典典

修改Python Tkinter中的默认字体

python

我正在使用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()

返回:

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

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

我做错了什么?


阅读 1906

收藏
2020-12-20

共1个答案

小编典典

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,因此您需要在创建任何其他窗口小部件之前进行此操作。

另外请注意,option_add如果您不想打扰先获取字体实例,也可以给它加上字体名称(即:)root.option_add("*Font", "TkDefaultFont")

2020-12-20