我正在运行Python 3.6并且想知道是否有办法获取Tkinter使用的默认字体,更具体地说是Canvas
对象在调用canvas.create_text
时使用的默认字体
答案 0 :(得分:0)
来自文件here:
Tk 8.0会自动将Courier,Helvetica和Times映射到所有平台上相应的本地姓氏。
我找不到文档说明canvas.create_text
的默认字体是什么,但它应该是上面引用中列出的3种之一。
答案 1 :(得分:0)
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
(我没有写这个。)
https://www.tcl.tk/man/tcl8.6/TkCmd/font.htm是字体功能的终极文档。
答案 2 :(得分:-1)
是的。用于在画布上创建文本对象的默认字体为“ TkDefaultFont”
<x:>
如果要修改该默认字体,则可以使用from tkinter import *
r = Tk()
c = Canvas(r)
c.pack()
id = c.create_text(10, 10, text='c')
def_font = c.itemconfig(id, 'font')[-2] # [-2] is default, [-1] is current
print(def_font, c.itemconfig(id)) # to see all the config info
来访问基础字体对象,然后对其进行操作:
nametofont()
如果您不想自定义默认字体,则可以基于当前字体创建一个新的命名字体,然后使用
进行修改。from tkinter import font
def_font_obj = font.nametofont(def_font)
def_font_obj.config(...)
然后将new_named_font作为字体选项传递给任何小部件配置。