获取Font时以退出代码1完成处理

时间:2019-07-30 01:48:58

标签: python pyside2

我有一些简单的代码,可从资源目录中获取字体并将其分配给QFont

我什么都没打印,没有变量。它只是不断返回退出代码1。

抱歉,我真的不知道该怎么尝试。因此,我没有任何尝试的证明。我确实确保测试了FONT_PATH是否要转入正确的文件。另外,从QApplication

调用时,此功能似乎也可以正常工作
from PySide2 import QtGui, QtCore
import os

def get_font():

    FONT_PATH = os.path.abspath(os.path.join(__file__, os.pardir, os.pardir, 'resources', 'ProximaNova-Regular.ttf'))
    FONT_DB = QtGui.QFontDatabase()
    FONT_ID = FONT_DB.addApplicationFont(FONT_PATH)
    FAMILIES = FONT_DB.applicationFontFamilies(FONT_ID)
    BOLD_FONT = QtGui.QFont('Proxima Nova')

    return BOLD_FONT

print get_font()

我期望的是

<PySide2.QtGui.QFont( "Proxima Nova....") at 0x000....>

我得到的是什么

Process finished with exit code 1

1 个答案:

答案 0 :(得分:1)

如果在CMD /终端上运行脚本,则会收到以下错误消息:

QFontDatabase: Must construct a QGuiApplication before accessing QFontDatabase

该消息表明您在使用QFontDatabase之前必须具有QGuiApplication(或QApplication),因此对于您而言,如果它不存在,则必须创建它:

import os

from PySide2 import QtGui, QtCore


def get_font():
    app = QtGui.QGuiApplication.instance()
    if app is None:
        app = QtGui.QGuiApplication([])
    FONT_PATH = os.path.abspath(
        os.path.join(
            __file__, os.pardir, os.pardir, "resources", "ProximaNova-Regular.ttf"
        )
    )
    FONT_DB = QtGui.QFontDatabase()
    FONT_ID = FONT_DB.addApplicationFont(FONT_PATH)
    FAMILIES = FONT_DB.applicationFontFamilies(FONT_ID)
    BOLD_FONT = QtGui.QFont("Proxima Nova")
    return BOLD_FONT


print(get_font())