问题描述
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
仅影响调用 后 创建的窗口小部件option_add
,因此您需要在创建任何其他窗口小部件之前进行此操作。
另外请注意,option_add
如果您不想打扰先获取字体实例,也可以给它加上字体名称(即:)root.option_add("*Font",
"TkDefaultFont")
。
解决方法
我正在使用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}
(没有错误,但没有任何改变!)
我做错了什么?