PyQt5打包exe后条形码图片生成功能失效问题求助
PyInstaller打包PyQt5+python-barcode程序后条形码生成失效的解决方法
问题场景
基于PyQt5开发了ResponsiveDataWidget和MostrarBarcode自定义组件,实现点击生成并展示条形码的功能。直接运行Python脚本时功能完全正常,但使用PyInstaller通过--onefile参数打包为单文件exe后,条形码生成功能报错失效。尝试过改用临时文件存储生成的条形码,问题仍然存在。
问题根源
排查后确认:python-barcode库默认使用的字体文件未被PyInstaller打包进exe中,导致程序运行时无法找到字体资源,从而触发条形码生成失败的报错。
解决方法
修改python-barcode的字体配置,放弃使用库默认的自定义字体,改用系统已安装的默认字体(比如Arial),让程序在打包后直接调用系统字体资源。
代码示例
调整条形码生成代码,通过writer_options指定系统字体:
import barcode from barcode.writer import ImageWriter # 配置writer参数,使用系统默认字体 writer_config = { 'font': 'Arial', # 指定系统已安装的字体名称 'font_path': None # 不指定自定义字体路径,让库自动使用系统字体 } # 生成条形码 barcode_obj = barcode.get_barcode_class('code128') barcode_instance = barcode_obj('123456789', writer=ImageWriter()) barcode_instance.save('temp_barcode', options=writer_config)
如果是在PyQt5的MostrarBarcode组件中调用,只需在生成条形码时传入上述配置即可。
内容的提问来源于stack exchange,提问作者Ruben Calvo
相关产品推荐
相关产品推荐

