使用 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 对象被用于预期 QStrings 和预期 QStrinList 的行为相应的地方。因此,在这种情况下,只需使用 python 方式即可:

_fontstr = QFontDatabase.applicationFontFamilies(id)[0]

【讨论】:

[0] 解决了访问问题。但是 QFontDatabase.applicationFontFamilies(id).removeDuplicates() 仍然给出错误(缺少的 s 是帖子中的错字,而不是代码中的错字)。 .removeAt(0) 也不起作用。 好的,完美。谢谢。

以上是关于使用 Python (PyQT 5.10) 在 QT 5.10 中加载自己的字体的主要内容,如果未能解决你的问题,请参考以下文章

如何为PyQt5构建Qt WebEngine?

所有 PyQt5 小部件都在同一点

PyQt4 中的 Q_ENUMS

Mac 安装PyQt

如何使用 PyQt5 Python 将 QTableWidget 数据转换为 PDF

ubuntu下安装和配置pycharm和pyqt5