我在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}
(没有错误,但没有改变!!)
我做错什么了?
Tkinter有几个内置字体——
TkDefaultFont
、TkTextFont
、TkFixedFont
等等,这些都是所谓的“命名字体”。它们非常强大——改变其中一个,所有使用它们的小部件也会改变。要更改其中一种字体,请获取该字体的句柄,然后使用
configure
方法进行更改。例如,要将TkDefaultFont
的大小更改为48,请执行以下操作:就这样。你不必做任何其他事情——任何使用
TkDefaultFont
的东西都会立即注意到变化。在您的问题中,您暗示您希望
TkDefaultFont
字体被所有东西使用。为此,您可以使用option_add
,如您所示:但是,请注意,
option_add
只影响在您调用了option_add
之后创建的小部件,因此您需要在创建任何其他小部件之前执行此操作。还要注意,如果您不想首先获取字体实例(即:
root.option_add("*Font", "TkDefaultFont")
),可以将字体名称指定给option_add
。相关问题 更多 >
编程相关推荐