缺少 PyQt QML 错误控制台



标题几乎说明了一切。

假设我有这个简单的应用程序:

main.py>>>

import sys
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication
from PyQt5.QtQuick import QQuickView
# Main Function
if __name__ == '__main__':
    # Create main app
    myApp = QApplication(sys.argv)
    # Create a label and set its properties
    appLabel = QQuickView()
    appLabel.setSource(QUrl('main.qml'))
    # Show the Label
    appLabel.show()
    # Execute the Application and Exit
    myApp.exec_()
    sys.exit()

main.qml>>>

import QtQuick 2.0
Rectangle {
    width: 250; height: 175
    Text {
        id: helloText
        anchors.verticalCenter: parent.verticalCenter
        anchors.horizontalCenter: parent.horizontalCenter
        text: "Hello World!!!n Traditional first app using PyQt5"
        horizontalAlignment: Text.AlignHCenter
    }
}

现在这个例子工作正常。但是假设我在main.qml中打错字,我写的是高度而不是高度。然后python代码可以正常工作,但它将启动一个空窗口,没有任何错误消息。

我该怎么做才能在 python 控制台中查看 .qml 文件中的错误?在 6000 行代码中发现拼写错误是非常痛苦的。

我正在使用PyQt 5.5.1,Anaconda 2.4.1(Python 3.5.1),Windows 8.1

如果你只想在控制台上看到错误输出,你不需要做任何事情,因为Qt会自动这样做。例如,如果我在您的示例中将height更改为heigth,则会在 stderr 上打印以下消息:

file:///home/foo/test/main.qml:4:17:无法分配给 不存在的属性"高度"宽度:250;高度: 175

如果要在应用程序中引发异常,可以连接到statusChanged信号并从错误方法获取详细信息:

    def handleStatusChange(status):
        if status == QQuickView.Error:
            errors = appLabel.errors()
            if errors:
                raise Exception(errors[0].description())
    appLabel = QQuickView()
    appLabel.statusChanged.connect(handleStatusChange)

相关内容

  • 没有找到相关文章

最新更新