为什么这不起作用?我的计算机上有Consolas
字体但下面的代码只使用默认字体。似乎唯一有效的字体是Courier
字体,与tkinter一起安装。
font_consolas = tkinter.font.Font(root, family="Consolas")
使用exists=True
运行它会显示以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
font_consolas = tkinter.font.Font(root, family="Consolas", exists=True)
File "C:\Python33\lib\tkinter\font.py", line 86, in __init__
"named font %s does not already exist" % (self.name,))
_tkinter.TclError: named font font1 does not already exist
我确实安装了字体,并通过
验证'Consolas' in tkinter.font.families() == True
指定列表中的字体有效,但
font_consolas = ["Consolas", ]
答案 0 :(得分:1)
根据文档,如果断言(Font(...)
)为false,exists=True
将抛出错误。断言基于 new 字体的名称,而不是您基于它的字体的名称。
它没有抛出错误,因为Consolas
字体不存在,它正在尝试创建新带有新名称的字体,并且该新字体不存在。由于您没有给它起一个名字,它会选择一个唯一的名称,因为根据定义,以前不存在唯一的名称,您就会收到错误。实际上,您正在说&#34;为我的字体创建一个唯一的名称,如果此唯一名称不是唯一的,则会抛出错误&#34;
换句话说,它正在做他们记录的事情。