使用 Python (PyQT 5.10) 在 QT 5.10 中加载自己的字体
Posted
技术标签:
【中文标题】使用 Python (PyQT 5.10) 在 QT 5.10 中加载自己的字体【英文标题】:Load own font in QT 5.10 with Python (PyQT 5.10) 【发布时间】:2018-02-13 08:30:28 【问题描述】:我尝试在安装了 QT 5.10 和 PyQT 5.10 的 CentOS 7 (Python 3.6.2) 上的 Python 应用程序中加载自己的字体。我尝试使用以下代码:
id = QFontDatabase.addApplicationFont("/PATH/party.ttf")
_fontstr = QFontDatabase.applicationFontFamilies(id).at(0)
_font = QFont(_fontstr, 8)
app.setFont(font)
但是,我收到:
AttributeError: 'list' 对象没有属性 'at'
我检查了字体文件是否找到,即 id != 1,它的 0。
此外,我检查了:
print("%s." % (type(QFontDatabase.applicationFontFamilies(id))))
我预计该类型是手册 (http://doc.qt.io/qt-5/qfontdatabase.html#applicationFontFamilies) 建议的 QStringList 类型,但事实并非如此。如果没有列表中没有相应属性的错误,我也无法调用其他方法,例如 removeDuplicates()。
【问题讨论】:
【参考方案1】:看起来,从 pyQt 5 开始,python str
对象被用于预期 QString
s 和预期 QStrinList
的行为相应的地方。因此,在这种情况下,只需使用 python 方式即可:
_fontstr = QFontDatabase.applicationFontFamilies(id)[0]
【讨论】:
[0] 解决了访问问题。但是 QFontDatabase.applicationFontFamilies(id).removeDuplicates() 仍然给出错误(缺少的 s 是帖子中的错字,而不是代码中的错字)。 .removeAt(0) 也不起作用。 好的,完美。谢谢。以上是关于使用 Python (PyQT 5.10) 在 QT 5.10 中加载自己的字体的主要内容,如果未能解决你的问题,请参考以下文章