我正在使用PyQt将QtQuick集成到我的Python应用程序中。我正在设法找到在Python框架内测试我的QtQuick Qml页面的最佳方法。我想将一个Qml文件列表传递给某个测试函数,以确保这些文件中的任何一个都不存在错误/异常。目前,我正在尝试将一个页面加载到QQmlComponent中并检查错误,但我还没有做到这一点:
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页面的最佳方法是什么?
发布于 2018-03-15 20:10:54
据我所知,您希望使错误信息更易读。errors()方法返回一个QQmlError列表,这个类有提供准确错误信息的方法:
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())
)https://stackoverflow.com/questions/49307970
复制相似问题