2024-09-27 21:32:57 发布
网友
在pyqt5应用程序中,我在qtdesigner中使用css为标签应用了字体
font: 57 68px "IntelOne Display Medium"; border: None;
我使用pyinstaller构建exe并在我的windows机器上运行它工作正常,但是当我在不同的机器上运行相同的exe时,字体不同,不是粗体
我的机器:
不同的机器:
如何在所有系统中保留字体
您必须确保字体可用,因此解决方案是使用QFontDatabase加载字体
要使其可用,有两个选项:
├── fonts └── main.py
import os import sys from pathlib import Path from PyQt5.QtCore import QDir from PyQt5.QtGui import QFontDatabase from PyQt5.QtWidgets import QApplication DIR_APPLICATION = ( Path(sys.executable).parent if getattr(sys, "frozen", False) else Path(__file__).resolve().parent ) def load_fonts_from_dir(directory): families = set() for fi in QDir(directory).entryInfoList(["*.ttf", "*.woff", "*.woff2"]): _id = QFontDatabase.addApplicationFont(fi.absoluteFilePath()) families |= set(QFontDatabase.applicationFontFamilies(_id)) return families def main(): app = QApplication(sys.argv) # LOAD FONTS font_dir = DIR_APPLICATION / "fonts" families = load_fonts_from_dir(os.fspath(font_dir)) print(families) # FIXME sys.exit(app.exec_()) if __name__ == "__main__": main()
命令:
pyinstaller add-data "fonts/*:fonts" onefile main.py
注意:在windows中,将:更改为;
:
;
├── fonts ├── main.py ├── resource.qrc └── resource_rc.py
resource.qrc
<RCC> <qresource prefix="/"> <file>fonts/foo.ttf</file> <file>fonts/bar.ttf</file> <file>fonts/baz.ttf</file> </qresource> </RCC>
pyrcc5 resource.qrc -o resource_rc.py
import os import sys from PyQt5.QtCore import QDir from PyQt5.QtGui import QFontDatabase from PyQt5.QtWidgets import QApplication import resource_rc def load_fonts_from_dir(directory): families = set() for fi in QDir(directory).entryInfoList(["*.ttf", "*.woff", "*.woff2"]): _id = QFontDatabase.addApplicationFont(fi.absoluteFilePath()) families |= set(QFontDatabase.applicationFontFamilies(_id)) return families def main(): app = QApplication(sys.argv) # LOAD FONTS font_dir = ":/fonts" families = load_fonts_from_dir(os.fspath(font_dir)) print(families) # FIXME sys.exit(app.exec_()) if __name__ == "__main__": main()
您必须确保字体可用,因此解决方案是使用QFontDatabase加载字体
要使其可用,有两个选项:
命令:
注意:在windows中,将
:
更改为;
resource.qrc
相关问题 更多 >
编程相关推荐