Объяснение:
Структура вашего проекта выглядит следующим образом:
├── main.py
└── qmlTest01
├── imports
│ ├── qmlTest01
│ │ └── ...
│ └── QtQuick
│ └── ...
├── qmlTest01.qml
├── qmlTest01.qmlproject
├── qtquickcontrols2.conf
└── Screen01.ui.qml
И в ваших импортах вы используете:
import qmlTest01 1.0
// ...
, но нигде вы не указываете, где этобиблиотека, но в случае второго образа вы должны запустить .qmlproject из QtCreator, который читает следующую конфигурацию:
/* File generated by Qt Creator */
import QmlProject 1.1
Project {
mainFile: "qmlTest01.qml"
/* ... */
Files {
filter: "qmldir"
directory: "."
}
Environment {
QT_QUICK_CONTROLS_CONF: "qtquickcontrols2.conf"
QT_AUTO_SCREEN_SCALE_FACTOR: "1"
}
/* List of plugin directories passed to QML runtime */
<b>importPaths: [ "imports" ]</b>
/* Required for deployment */
targetDirectory: "/opt/qmlTest01"
}
Где это наблюдается, что указывает маршрут импорта других модулей.
Решение:
Решение состоит в том, чтобы установить некоторые переменные среды с помощью os.environ () и пути к папке «import», используя addImportPath () из QQmlEngine:
import os
import sys
from PySide2.QtCore import QUrl
from PySide2.QtGui import QGuiApplication
from PySide2.QtQuick import QQuickView
if __name__ == "__main__":
current_dir = os.path.dirname(os.path.realpath(__file__))
<b>os.environ["QT_QUICK_CONTROLS_CONF"] = os.path.join(
current_dir, "qmlTest01", "qtquickcontrols2.conf"
)
os.environ["QT_AUTO_SCREEN_SCALE_FACTOR"] = "1"</b>
app = QGuiApplication(sys.argv)
view = QQuickView()
import_path = os.path.join(current_dir, "qmlTest01", "imports")
<b>view.engine().addImportPath(import_path)</b>
filename = os.path.join(current_dir, "qmlTest01", "qmlTest01.qml")
url = QUrl.fromLocalFile(filename)
view.setSource(url)
view.show()
app.exec_()