python - PyQt5 缺少 QtQuick.Studio 模块
问题描述
问题
我使用 Qt Design Studio 创建了一些 UI 组件和屏幕(.ui.qml 格式),但无论我做什么,每当我尝试在 PyQt5 中运行它时,我都会遇到以下错误:
module "QtQuick.Studio.Components" is not installed
.ui.qml 文件有一个导入
import QtQuick.Studio.Components 1.0
我在网上到处找,找不到太多关于如何解决这个问题的话题。
问题
克服这个问题的最佳方法是什么?我一直在 Windows 上使用它,但我主要想在树莓派上使用代码,是否需要安装额外的依赖项?
Python代码
import os
from pathlib import Path
import sys
from PyQt5.QtCore import QCoreApplication, Qt, QUrl
from PyQt5.QtGui import QGuiApplication
from PyQt5.QtQml import QQmlApplicationEngine
if __name__ == '__main__':
CURRENT_DIRECTORY = Path(__file__).resolve().parent
app = QGuiApplication(sys.argv)
engine = QQmlApplicationEngine()
engine.addImportPath(os.fspath(CURRENT_DIRECTORY.parents[0]))
url = QUrl.fromLocalFile(os.fspath(CURRENT_DIRECTORY / "Screen01.ui.qml"))
def handle_object_created(obj, obj_url):
if obj is None and url == obj_url:
print("exit")
QCoreApplication.exit(-1)
engine.objectCreated.connect(
handle_object_created, Qt.ConnectionType.QueuedConnection
)
engine.load(url)
if not engine.rootObjects():
sys.exit(-1)
sys.exit(app.exec())
解决方案
视窗
我曾经print(engine.importPathList())
看到我的导入路径。这促使我去C:/Users/USER/AppData/Local/Programs/Python/Python38/lib/site-packages/PyQt5/Qt5/qml
并注意到 QtQuick 存在但没有 Studio 文件夹。
由于 Qt Design Studio 可以在没有导入问题的情况下运行我的代码,我知道它会有一个 Studio 文件夹。因此,我进入C:\Program Files\Qt\qtdesignstudio-2.2.0-community\qt5_design_studio_reduced_version\qml\QtQuick
并将 Studio 文件夹从那里复制到上面的 PyQt5 路径中。
这解决了这个问题。
Linux
我还没有在 Linux 上尝试过。