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

Python Tkinter自定义字体失效问题求助

Tkinter自定义字体不显示的解决方法

你的问题出在引用字体时用了文件名而非字体的实际名称。pyglet加载字体后,Tkinter需要使用字体本身的正式名称(比如字体文件menu_font.ttf实际可能叫MenuFont或其他名称),而不是ttf文件的名字,找不到对应名称的字体就会自动 fallback 到默认字体。

解决步骤:

  • 确认字体的实际名称

    1. 用pyglet代码直接获取:
      pyglet.font.add_file('menu_font.ttf')
      # 加载字体并获取它的正式名称
      font_obj = pyglet.font.load('menu_font')
      print(font_obj.name)  # 控制台输出的就是你要用到的字体名
      
      运行这段代码就能拿到字体的真实名称,比如Menu Sans之类的。
    2. 或者用系统工具查看:Windows右键打开字体文件看顶部的名称,Mac用字体册打开查看字体名称。
  • 修改代码中的字体引用
    把所有font = ('menu_font', 24)改成font = ('实际字体名', 24),或者直接用上面获取到的font_obj.name:

    pyglet.font.add_file('menu_font.ttf')
    font_name = pyglet.font.load('menu_font').name
    
    # 之后所有控件的font参数都用这个font_name
    menu_heading.config(bg='white', font=(font_name, 24), width=60, height=2)
    login_user.config(bg='#14cae3', font=(font_name, 24), width=14, height=2)
    
  • 额外检查点

    • 确保menu_font.ttf和你的Python脚本在同一目录下,否则要写绝对路径(比如C:/fonts/menu_font.ttf)。
    • 检查字体文件是否损坏,换个已知正常的ttf文件测试,排除文件本身的问题。

内容的提问来源于stack exchange,提问作者Moez Anwar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 01:37:21