【问题标题】:PyQt5 Missing QtQuick.Studio ModulePyQt5 缺少 QtQuick.Studio 模块
【发布时间】:2021-12-19 12:24:26
【问题描述】:

问题

我使用 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())

【问题讨论】:

    标签: python qt pyqt pyqt5 qt-quick


    【解决方案1】:

    窗口

    我使用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 上试用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 2021-10-02
      • 2015-01-08
      • 2015-01-26
      • 2014-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多