eri*_*icc 20 python tkinter python-2.7
我正在使用Tkinter在Python2.7中使用GUI,我有一个恼人的问题.
我想定义所有小部件使用的默认字体,如果可能的话,在一行中.此行仅修改Entry或ComboBox中使用的字体:
root.option_add("*Font", "courier 10")
Run Code Online (Sandbox Code Playgroud)
但不是示例复选框的标签.
我发现预定义的字体存在"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()
Run Code Online (Sandbox Code Playgroud)
回报:
{'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}
(没有错误,但没有任何改变!)
我做错了什么?
Bry*_*ley 35
Tkinter的有几个内置字体- ,TkDefaultFont,TkTextFont,TkFixedFont等等,这些都是所谓的"命名的字体".它们非常强大 - 改变其中一个,所有使用它们的小部件也会改变.
要更改其中一种字体,请获取它的句柄,然后使用该configure方法进行更改.例如,要将大小更改TkDefaultFont为48,您可以这样做:
default_font = tkFont.nametofont("TkDefaultFont")
default_font.configure(size=48)
Run Code Online (Sandbox Code Playgroud)
而已.您无需做任何其他事情 - 使用的所有内容TkDefaultFont都会立即发现变化.
在您的问题中,您暗示您希望TkDefaultFont所有内容都使用字体.要做到这一点,您可以使用option_add如您所示:
root.option_add("*Font", default_font)
Run Code Online (Sandbox Code Playgroud)
但请注意,这option_add只会影响您调用后创建的小部件option_add,因此您需要在创建任何其他小部件之前执行此操作.
另请注意,option_add如果您不想首先获取字体实例(即:),则可以给出字体名称root.option_add("*Font", "TkDefaultFont").
| 归档时间: |
|
| 查看次数: |
26056 次 |
| 最近记录: |