You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 02:45:07