2

我正在使用 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 元素。即使我确实有一个快速控制元素,也会发生同样的事情。但是,如果我删除/注释掉下面 Qt Quick Controls 的导入语句,则应用程序运行良好。我也尝试更改快速控件旁边的版本号,但没有成功。

更新:似乎无法找到该模块是一个路径问题,所以我通过将这一行添加到顶部来强制路径进入 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
4

1 回答 1

1

我想通了:我不需要强行进入路径;在 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

于 2021-06-10T18:10:39.103 回答