首页 > 解决方案 > 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())

标签: pythonqtpyqtpyqt5qt-quick

解决方案


视窗

我曾经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 上尝试过。


推荐阅读