Tkinter调用Pyglet导入的外部字体时显示为默认字体如何解决
解决方法
你代码的核心问题是font.Font的family参数传值错误:pyglet加载字体文件后,Tkinter识别的是字体的内部实际名称,而非ttf文件的文件名。你当前传的是文件名testingFont,而该字体实际名称为FamIo8,替换该参数即可解决问题。
你用的import tkinter.font as font导入语句没有问题,不会影响运行结果。
可直接运行的修正代码
import tkinter as tk import tkinter.font as font import pyglet.font import os # 拼接字体绝对路径,避免工作目录不符导致加载失败 current_dir = os.path.dirname(os.path.abspath(__file__)) font_path = os.path.join(current_dir, 'testingFont.ttf') pyglet.font.add_file(font_path) # family参数传入字体实际名称 FamIo8 myFont = font.Font(family="FamIo8", size=24) # 窗口初始化 root = tk.Tk() thisIsALabel = tk.Label( root, text="This is a label", foreground="white", background="black", font=myFont ) thisIsALabel.pack(padx=50, pady=20) root.mainloop()
额外校验方案
如果不确定字体的实际内部名称,可以用以下代码打印加载后的字体名称确认:
pyglet.font.add_file('testingFont.ttf') loaded_font = pyglet.font.load('FamIo8') print(loaded_font.name)
内容的提问来源于stack exchange,提问作者Kolabold
相关产品推荐
相关产品推荐

