Python 在Tkinter中获取默认字体
我正在运行Python 3.6,想知道是否有办法获得Tkinter使用的默认字体,更具体地说是Python 在Tkinter中获取默认字体,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我正在运行Python 3.6,想知道是否有办法获得Tkinter使用的默认字体,更具体地说是Canvas对象在调用Canvas.create_text时使用的默认字体。来自文档: Tk 8.0自动将Courier、Helvetica和Time映射到所有平台上相应的本地姓氏 我找不到说明画布默认字体的文档。创建文本将是什么,但它应该是上面引用中列出的3种字体之一。idlelib/help.py有以下行: normalfont = self.findfont(['TkDefaultFont
Canvas
对象在调用Canvas.create_text
时使用的默认字体。来自文档:
Tk 8.0自动将Courier、Helvetica和Time映射到所有平台上相应的本地姓氏
我找不到说明画布默认字体的文档。创建文本将是什么,但它应该是上面引用中列出的3种字体之一。
idlelib/help.py
有以下行:
normalfont = self.findfont(['TkDefaultFont', 'arial', 'helvetica'])
其中,findfont
定义如下:
def findfont(self, names):
"Return name of first font family derived from names."
for name in names:
if name.lower() in (x.lower() for x in tkfont.names(root=self)):
font = tkfont.Font(name=name, exists=True, root=self)
return font.actual()['family']
elif name.lower() in (x.lower()
for x in tkfont.families(root=self)):
return name
(这不是我写的。)
是字体函数上的最终文档 是的。用于在画布上创建文本对象的默认字体为“TkDefaultFont” 如果要修改该默认字体,可以使用
nametofont()
访问基础字体对象,然后对其进行操作:
from tkinter import font
def_font_obj = font.nametofont(def_font)
def_font_obj.config(...)
如果不想自定义默认字体,可以基于当前字体创建新的命名字体,然后使用
current_font = c.itemconfig(id, 'font')[-1] # or just c.itemcget(id, 'font')
new_named_font = font.Font(font=current_font).config(...)
然后将名为字体的新字体作为字体选项传递给任何小部件配置
current_font = c.itemconfig(id, 'font')[-1] # or just c.itemcget(id, 'font')
new_named_font = font.Font(font=current_font).config(...)