【问题标题】:font error - python tkinter label字体错误 - python tkinter 标签
【发布时间】:2019-01-22 10:13:39
【问题描述】:

我在 win 10 上使用 anurati(如果你不知道它是什么,请用谷歌搜索)字体我尝试从 tkinter 调用它以接收错误

我的代码是:

from tkinter import *

root = Tk()
root.title("P.E.T.A.R")
txt = Label(root, text = "welcome to project petar")
txt.grid(column = 0, row = 0, font=("Anurati Regular"))

错误是

================ RESTART: C:\Users\dell\Desktop\p.e.t.a.r.py ================
Traceback (most recent call last):
  File "C:\Users\dell\Desktop\p.e.t.a.r.py", line 6, in <module>
    txt.grid(column = 0, row = 0, font=("Anurati Regular", 50))
  File "C:\Users\dell\AppData\Local\Programs\Python\Python35-32\lib\tkinter\__init__.py", line 2082, in grid_configure
    + self._options(cnf, kw))
_tkinter.TclError: bad option "-font": must be -column, -columnspan, -in, -ipadx, -ipady, -padx, -pady, -row, -rowspan, or -sticky
>>> 

为什么会这样

【问题讨论】:

  • 只使用文字的图片会更好吗?
  • 为什么在grid方法中使用字体?
  • @elitegamer88 不,最好使用图像。添加新内容或更新时,它会很快变老。您只需要修复一些小错误即可使其正常工作。有关问题的解释,请参阅我的答案。
  • 错误很明显:font 不是grid 命令的有效选项。
  • 没那么拘谨

标签: python tkinter fonts label


【解决方案1】:

你之前必须渲染字体,你也使用不正确。

在开始时使用此代码:

from tkinter import *
import tkinter.font
my_font = tkinter.font.Font(root,family="Anurati Regular")

然后你可以像这样使用它:

txt = Label(root, text = "welcome to project petar",font=my_font)
txt.grid(column = 0, row = 0)

因此,您的整体代码将如下所示:

from tkinter import *
import tkinter.font
root = Tk()
root.title("P.E.T.A.R")
my_font = tkinter.font.Font(root,family="Anurati Regular")
txt = Label(root, text = "welcome to project petar",font=my_font)
txt.grid(column = 0, row = 0)

编辑:

正如您在评论中所说的 this method does not create the font just a different version of the default ,您使用不正确的名称调用字体或未安装字体,发生这种情况时,tkinter 会创建一个基本字体。为了证明这种方法有效,我制作了另一个使用 Windows 内置字体的代码:

from tkinter import *
import tkinter.font
root = Tk()
root.title("P.E.T.A.R")
my_font = tkinter.font.Font(root,family="Comic Sans MS")
my_font2 = tkinter.font.Font(root,family="Copperplate Gothic Bold")
txt = Label(root, text = "welcome to project petar",font=my_font)
txt.grid(column = 0, row = 0)
txt2 = Label(root, text = "welcome to project petar",font=my_font2)
txt2.grid(column = 0, row = 1)

在执行此代码时:

编辑 2:

我做了进一步的调查,下载了Anurati字体,终于意识到我是对的。它有两个问题:

  • 你叫错了名字。名称是Anurati,但您使用的是Anurati Regular。你应该使用my_font = tkinter.font.Font(root,family="Anurati")
  • 这种字体的小写字母很简单,而大写字母则不然。并且所写的文字都是小写字母。你的文字应该是txt = Label(root, text = "WELCOME TO PROJECT PETAR",font=my_font)

之后你的最终代码变成:

from tkinter import *
import tkinter.font
root = Tk()
root.title("P.E.T.A.R")
my_font = tkinter.font.Font(root,family="Anurati")
txt = Label(root, text = "WELCOME TO PROJECT PETAR",font=my_font)
txt.grid(row=0,column=0)

所以运行上面的代码后,你会得到预期的输出:

【讨论】:

  • You have to render font ,not use it as option.... 这是不正确的。您可以将其用作选项,他们只是将其放在错误的位置。
  • 这可能是我的字体的问题,但这种方法不会创建字体,只是默认的不同版本
  • @elitegamer88 因为您输入了错误的字体名称。通常,当 tkinter 没有可用的字体时,它会创建自定义字体。
  • 检查 this site 以查看 windows 中包含哪些字体。
  • 没有字体异议工作,因为字体只支持大写字母(大写)
猜你喜欢
  • 1970-01-01
  • 2017-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-23
  • 1970-01-01
  • 2018-03-11
相关资源
最近更新 更多