使用QFont获取字体文件的样式

时间:2015-05-21 19:47:26

标签: python qt pyside

在QFont中是否有命令我可以获得字体的样式。我想出了如何获取字体文件的姓氏,但没有获取文件的特定样式。我找到了一个命令,它返回与字体系列相关的整个样式列表。

    styleList = QtGui.QFontDatabase.styles(fontFamilyName)

我需要特定字体文件的确切样式。例如,如果我将arialb.ttf作为输入,我应该得到姓氏:Arial;风格:大胆。有什么想法吗?

但我正在尝试使用未安装在机器中的字体。这是我的代码。

    fontFile = "C:\Users\Desktop\abc.otf" 
    fontdb = QtGui.QFontDatabase() 
    id = fontdb.addApplicationFont(fontFile) 
    family = fontdb.applicationFontFamiles(id) 
    font = QtGui.QFont(family[0]) 
    print font.styleName()

1 个答案:

答案 0 :(得分:2)

您应该始终使用QFontInfo来获取有关字体的准确信息。 QFont只会显示请求的内容,而不是系统实际能够提供的内容:

>>> font = QtGui.QFont('Arial')
>>> font.family()
'Arial'
>>> fontinfo = QtGui.QFontInfo(font)
>>> fontinfo.family()
'Helvetica'

我没有" Arial"安装在我的系统上,因此字体解析为最近的等价物,即" Helvetica"。要获得风格,请执行以下操作:

>>> fontinfo.styleName()
'Regular'

或直接查询属性:

>>> fontinfo.bold()
False
>>> fontinfo.italic()
False