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

PyQt6调用QFontDatabase.addApplicationFont触发0xC0000005错误求助

PyQt6调用QFontDatabase.addApplicationFont触发Windows访问违规错误(0xC0000005)

问题背景

使用PyQt6 6.5.2编写代码时,执行字体加载逻辑会导致程序崩溃,退出码为-1073741819 (0xC0000005),注释掉字体加载的前两行代码后程序可正常运行。

原始代码片段:

self.font_id = QFontDatabase.addApplicationFont('conf/font.otf')
self.font_family = QFontDatabase.applicationFontFamilies(font_id)

for name, classtype in self.__dict__.items():
    try:
        classtype.setFont(QFont(self.font_family[0], int(self.base_cfg['Config']['fontSize']), QFont.Weight.Bold))
    except AttributeError:
        pass

最小复现代码

仅执行以下两行代码就会触发崩溃:

from PyQt6.QtGui import QFontDatabase
QFontDatabase.addApplicationFont('conf/font.otf')

环境信息

  • Python版本:3.9.4 / 3.10.2 / 3.11.4
  • 操作系统:Windows 11 版本22621.2070
  • PyQt6版本:6.5.2

调试报错信息

在PyCharm运行配置中添加-X dev解释器选项后,得到以下访问违规报错:

Windows fatal exception: access violation

Thread 0x00002a00 (most recent call first):
  File "D:\Software\PyCharm Community Edition 2023.2\plugins\python-ce\helpers\pydev\pydevd.py", line 138 in _on_run
  File "D:\Software\PyCharm Community Edition 2023.2\plugins\python-ce\helpers\pydev\_pydevd_bundle\pydevd_comm.py", line 219 in run
  File "D:\Software\Python\lib\threading.py", line 1009 in _bootstrap_inner
  File "D:\Software\Python\lib\threading.py", line 966 in _bootstrap

Thread 0x00004cd4 (most recent call first):
  File "D:\Software\PyCharm Community Edition 2023.2\plugins\python-ce\helpers\pydev\_pydevd_bundle\pydevd_comm.py", line 293 in _on_run
  File "D:\Software\PyCharm Community Edition 2023.2\plugins\python-ce\helpers\pydev\_pydevd_bundle\pydevd_comm.py", line 219 in run
  File "D:\Software\Python\lib\threading.py", line 1009 in _bootstrap_inner
  File "D:\Software\Python\lib\threading.py", line 966 in _bootstrap

Thread 0x00004728 (most recent call first):
  File "D:\Software\Python\lib\threading.py", line 324 in wait
  File "D:\Software\Python\lib\queue.py", line 180 in get
  File "D:\Software\PyCharm Community Edition 2023.2\plugins\python-ce\helpers\pydev\_pydevd_bundle\pydevd_comm.py", line 368 in _on_run
  File "D:\Software\PyCharm Community Edition 2023.2\plugins\python-ce\helpers\pydev\_pydevd_bundle\pydevd_comm.py", line 219 in run
  File "D:\Software\Python\lib\threading.py", line 1009 in _bootstrap_inner
  File "D:\Software\Python\lib\threading.py", line 966 in _bootstrap

排查与解决建议

  • 检查字体文件完整性:
    字体文件损坏或格式不兼容是常见触发原因,替换为已知可用的OTF字体测试,或重新导出当前字体文件确保无损坏。
  • 使用绝对路径加载字体:
    相对路径可能因工作目录问题导致Qt无法找到文件,改用绝对路径:
    import os
    font_path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'conf/font.otf'))
    QFontDatabase.addApplicationFont(font_path)
    
  • 验证字体格式兼容性:
    部分OTF字体包含Qt无法处理的特殊结构,用FontForge等工具打开并重新导出为标准OTF格式后再测试。
  • 调整PyQt6版本:
    6.5.2版本可能存在Windows平台字体加载bug,尝试降级到6.5.1或升级至最新稳定版:
    pip uninstall pyqt6 -y
    pip install pyqt6==6.5.1
    
  • 排除IDE调试干扰:
    在纯命令行下运行最小复现代码,确认是否是PyCharm调试工具导致的冲突:
    python your_script.py
    
  • 修复Qt运行环境:
    卸载并重新安装PyQt6,确保依赖的Qt运行库完整无损坏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 17:34:53