模块 "material" 未安装

Module "material" is not installed

我正在使用 Qt Creator 在 Windows 7 VM 上编写 运行 代码,当 运行 我的代码时出现 module "material" is not installed 错误。它使用 Pyside6 用 Python 3.8 初始化。我的 Qt Creator 是版本 4.15.0

这是 QML 代码:

import QtQuick 2.0
import QtQuick.Controls 2.12

Item {
    width: 640
    height: 480
    visible: true

    Rectangle {
        id: rectangle
        x: 232
        y: 220
        width: 200
        height: 200
        color: "#c96565"
    }
} 

这是 Python 脚本:它是示例默认脚本之一的修改版本。

import os
import sys
import urllib.request
import json
from pathlib import Path

import PySide6.QtQml
from PySide6.QtQuick import QQuickView
from PySide6.QtCore import QStringListModel, Qt, QUrl
from PySide6.QtGui import QGuiApplication


if __name__ == '__main__':

    #Set up the application window
    app = QGuiApplication(sys.argv)
    view = QQuickView()
    view.setResizeMode(QQuickView.SizeRootObjectToView)

    #Load the QML file
    qml_file = Path(__file__).parent / "main.qml"
    view.setSource(QUrl.fromLocalFile(os.fspath(qml_file.resolve())))

    #Show the window
    if view.status() == QQuickView.Error:
        sys.exit(-1)
    view.show()

    #execute and cleanup
    app.exec()
    del view

虽然我还没有在 QMl 中使用 Qt Quick Control 元素。即使我确实有一个快速控制元素,也会发生同样的事情。但是,如果我 remove/comment 输出下面 Qt Quick Controls 的导入语句,应用程序运行正常。我试过更改快速控件旁边的版本号也没有成功。

UPDATE:似乎无法找到模块是路径问题,所以我通过将此行添加到顶部来强行将路径强行放入 qml 文件中: import "./Controls.2" as QtQuickControls 我将嵌套在 PySide6 文件夹中的 Controls.2 文件夹复制粘贴到该项目的根目录中。我现在得到的错误是

The plugin <filepath to qtquickcontrols2plugin.dll> uses incompatible Qt library. <5.15.0> [release] import "./Controls.2" as QtQuickControls

我想通了:我不需要暴力破解路径;在你的 python 项目的 .pydevproject 文件中,确保你添加了 PySide6 的完整路径,因为出于某种原因系统无法在没有路径的情况下找到它。 像这样:

<pydev_pathproperty name="org.python.pydev.PROJECT_EXTERNAL_SOURCE_PATH">
        <path>\path\to\your\python\venv\or\folder\Lib\site-packages\PySide6</path>
</pydev_pathproperty>

如果这不起作用,请尝试直接调用 Material 模块: import QtQuick.Controls.Material 2.12