PyQt在qrc文件中添加自定义字体并使用

本文详细介绍了如何在PyQt5应用中使用qrc资源文件添加并使用自定义字体。首先,在qrc文件中添加字体资源,然后通过pyrcc5工具转换为Python模块。接着,程序中利用QFontDatabase加载字体并设置界面字体。最后,讨论了在QtDesigner中预览自定义字体的方法,以及如何在UI设计中应用这些字体。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PyQt在qrc文件中添加自定义字体并使用

使用pyqt开发程序时有时为了界面美观需要使用一些自定义的字体。

为了方便传播,需要将字体文件嵌入进数据中,这样软件发送给别人时,他人不必拥有指定字体也能看到美观的界面。

该文章主要描述了如何在qrc文件中添加自定义字体文件,并在编译成py文件后,在程序中正常使用该字体。


Step1

在QtDesigner中新建qrc资源文件并添加指定字体。

此处我们以开源字体霞骛文楷举例。

<RCC>
  <qresource prefix="resources">
    <file>fontFile/霞骛文楷.ttf</file>
  </qresource>
</RCC>

关闭qrc文件,将qrc文件转换为py文件。

pyrcc5 test.qrc -o test_rc.py

注:转换后的py文件要以“_rc”结尾


Step2

打开主程序的py文件

from PyQt5.QtGui import QFontDatabase, QFont
import test_rc  # 此处直接导入qrc转换后的py文件

fontDb = QFontDatabase()
fontID = fontDb.addApplicationFont(":resources/fontFile/霞骛文楷.ttf")  # 此处的路径为qrc文件中的字体路径
fontFamilies = fontDb.applicationFontFamilies(fontID)
print(fontFamilies)  # ['LXGW WenKai']
self.setFont(QFont('LXGW WenKai'))

在此需要阐明一个概念,即字体名字体文件名是不一样的。

霞骛文楷.ttf的字体文件名为霞骛文楷.ttf,但是字体名却是LXGW WenKai,这个名字外部不会显示出来,需要通过调用程序读取。

在往程序中添加完字体后,使用返回的id获取字体的字体名,再通过setFont方法将其添加到程序中。


Step3

此时无论是在QtDesigner还是主程序中,都可以通过直接在设置控件的字体样式为我们自定义的字体。

self.labelFileName1.setStyleSheet("QLabel {font: 28px \"LXGW WenKai\"; color: rgb(45, 98, 147);")
QLabel {
	font: 28px "LXGW WenKai";
	color: rgb(45, 98, 147);
}

此时直接使用字体名就可以,并且需要使用引号包裹,无需绝对路径。


Step4

上述三个步骤,可以保证程序在运行时,字体显示不会错误,但是由于是在主程序中添加字体文件,只有运行时才会展示,在QtDesigner中,想要实时预览自定义字体效果应该怎样呢。

首先需要在QtDesigner中关掉当前的ui文件,这样“设置”下方的“附加字体”选项才会启用。

选中“设置”—>“附加字体”,添加自定义字体文件,可以看到,字体文件在被导入进时,会显示出字体文件的文件名字体名(这也是快速获取字体名的一个方法)

这时候再重开ui文件,确保自己的qss字体名引用正确,就可以在QtDesigner中实时预览字体效果。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值