python - PyQt5:使用谷歌字体
问题描述
是否可以在 PyQt5 应用程序中使用谷歌字体?我正在尝试向像素图中添加一些文本,并希望能够在可能的情况下使用谷歌字体。https://fonts.google.com/。
我无法在网上找到任何关于此的内容。
def addText(pixmap, w, h, name):
painter = QPainter()
font = painter.font()
font.setPointSize(36);
painter.begin(pixmap)
position = QtCore.QRect(0, 0, w,h)
painter.setFont(font);
painter.drawText(position, Qt.AlignCenter, name);
painter.end()
return pixmap
如果可能的话,关于如何完成这项工作的任何想法?提前致谢
解决方案
您必须下载字体并添加它QFontDatabase::addApplicationFont()
,例如:
from PyQt5 import QtCore, QtGui, QtWidgets
def addText(pixmap, w, h, name):
painter = QtGui.QPainter(pixmap)
font = QtGui.QFont("Roboto")
font.setPointSize(36)
position = QtCore.QRect(0, 0, w, h)
painter.setFont(font);
painter.drawText(position, QtCore.Qt.AlignCenter, name);
painter.end()
return pixmap
def create_pixmap():
pixmap = QtGui.QPixmap(512*QtCore.QSize(1, 1))
pixmap.fill(QtCore.Qt.white)
return addText(pixmap, 512, 512, "Stack Overflow")
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
dir_ = QtCore.QDir("Roboto")
_id = QtGui.QFontDatabase.addApplicationFont("Roboto/Roboto-Regular.ttf")
print(QtGui.QFontDatabase.applicationFontFamilies(_id))
w = QtWidgets.QLabel()
w.setPixmap(create_pixmap())
w.show()
sys.exit(app.exec_())
该示例可在此处找到。
推荐阅读
- vhdl - VHDL 中的 2:1 Mux - 信号不改变值
- apache-spark - 带有结构化流 protobuf 的 Apache Kafka
- java - 实现 Iterable 与实现 Iterator
- c - 将文件的每一行作为字符串存储在数组中
- sql-server-2012 - SQL“组”和“计数”类别
- encoding - 在 Jest 测试中编码的双引号
- python - 使用“scrapy”进行 Python 网络抓取:不从 span 中提取文本
- javascript - 在 GraphQL 的根部解析自定义类型
- javascript - 如何在 CSS/Javascript 中制作像素化的非直线边框?
- azure - 将智能合约从 remix 部署到 azure 区块链的问题 - 错误