字体错误-python tkinter标签

字体错误-python tkinter标签,python,tkinter,fonts,label,Python,Tkinter,Fonts,Label,我在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")) 错误是 =========

我在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
>>> 
======================重新启动:C:\Users\dell\Desktop\p.e.t.a.r.py================
回溯(最近一次呼叫最后一次):
文件“C:\Users\dell\Desktop\p.e.t.a.r.py”,第6行,在
网格(列=0,行=0,字体=(“Anurati常规”,50))
文件“C:\Users\dell\AppData\Local\Programs\Python\Python35-32\lib\tkinter\\uuuuuuu init\uuuuuuuuuu.py”,第2082行,网格配置中
+自选配件(cnf,kw))
_tkinter.TclError:错误选项“-font”:必须是-column、-columnspan、-in、-ipadx、-ipady、-padx、-pady、-row、-rowspan或-sticky
>>> 

为什么会发生这种情况

您必须在渲染字体之前进行渲染,而且您还错误地使用了字体

在开始时使用此代码:

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)
编辑: 正如您在评论中所说的那样,
此方法不会创建字体,而只是创建默认字体的不同版本
,您使用不正确的名称调用字体,或者字体未安装,发生这种情况时,
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=“欢迎来到PETAR项目”,font=my\u 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)
因此,运行上述代码后,您将获得预期输出:

只使用文本的图片会更好吗?为什么要在
网格
方法中使用字体?@elitegamer88不,使用图像不会更好。当添加新内容或更新时,它会很快变老。你只需要修正一些小错误就可以了。有关问题的解释,请参阅我的答案。错误是不言自明的:
font
不是
grid
命令的有效选项。不是因为必须渲染字体而不是将其用作选项。
。。。这是不正确的。您可以将其用作选项。他们只是将其放在了错误的位置。这可能是我的字体有问题,但此方法不会创建字体,只是创建了不同版本的字体default@elitegamer88这是因为您输入了错误的字体名称。通常,当tkinter没有可用的字体时,它会创建一个自定义字体。请检查windows中是否包含了哪些字体。不允许使用不同意的字体,因为该字体只支持大写字母(大写)