tkinter.font.Font()不起作用

时间:2013-12-02 20:57:07

标签: python fonts tkinter

为什么这不起作用?我的计算机上有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", ]

1 个答案:

答案 0 :(得分:1)

根据文档,如果断言(Font(...))为false,exists=True将抛出错误。断言基于 new 字体的名称,而不是您基于它的字体的名称。

它没有抛出错误,因为Consolas字体不存在,它正在尝试创建带有新名称的字体,并且该新字体不存在。由于您没有给它起一个名字,它会选择一个唯一的名称,因为根据定义,以前不存在唯一的名称,您就会收到错误。实际上,您正在说&#34;为我的字体创建一个唯一的名称,如果此唯一名称不是唯一的,则会抛出错误&#34;

换句话说,它正在做他们记录的事情。