首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Python测试QtQuick Qml

如何用Python测试QtQuick Qml
EN

Stack Overflow用户
提问于 2018-03-15 19:42:22
回答 1查看 609关注 0票数 1

我正在使用PyQt将QtQuick集成到我的Python应用程序中。我正在设法找到在Python框架内测试我的QtQuick Qml页面的最佳方法。我想将一个Qml文件列表传递给某个测试函数,以确保这些文件中的任何一个都不存在错误/异常。目前,我正在尝试将一个页面加载到QQmlComponent中并检查错误,但我还没有做到这一点:

代码语言:javascript
复制
def test_qml(self):
    app = QApplication(sys.argv)
    engine = QQmlApplicationEngine()
    rel = "/gui/QT/Page1.qml"
    c = QQmlComponent(engine, QUrl.fromLocalFile(SRC_PATH + os.path.normpath(rel)))
    print(c.errors())

此外,根据我所读到的,我认为要获得QQmlComponent的显示错误,我应该捕获一个信号onStatusChange,然后检查,这对我来说似乎是错误的方法。用Python测试qml页面的最佳方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-15 20:10:54

据我所知,您希望使错误信息更易读。errors()方法返回一个QQmlError列表,这个类有提供准确错误信息的方法:

代码语言:javascript
复制
import sys

from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtQml import *

type_error_toString = { 
    QtDebugMsg: "debug", 
    QtInfoMsg : "info", 
    QtWarningMsg : "wargning",
    QtCriticalMsg: "critical",
    QtFatalMsg: "fatal"
}

app = QGuiApplication(sys.argv)
engine = QQmlApplicationEngine()
path = "/path/of/item.qml"
c = QQmlComponent(engine, QUrl.fromLocalFile(path))

if c.isError():
    for error in c.errors():
        print(error.toString())
        print("type: {}, row : {}, column: {}, message: {}"
            .format(
                type_error_toString[error.messageType()],
                error.line(), 
                error.column(),
                error.description())
            )
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49307970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档