PyQt6中QtQml.StateMachine模块未安装错误求助
问题
运行PyQt6应用时加载QML状态机代码出现错误:
QQmlApplicationEngine failed to load component .../src/qml/Main.qml:8:1: module "QtQml.StateMachine" is not installed
相关代码:
- main.py:
import sys from PyQt6.QtGui import QGuiApplication from PyQt6.QtQml import QQmlApplicationEngine from PyQt6.QtCore import QObject, pyqtSlot, pyqtSignal app = QGuiApplication(sys.argv) engine = QQmlApplicationEngine() engine.quit.connect(app.quit) engine.load('qml/Main.qml') if not engine.rootObjects(): sys.exit(-1) sys.exit(app.exec())
- qml/Main.qml:
Window { ... // Qt State Machine QML Guide code DSM.StateMachine { id: stateMachine // set the initial state initialState: s1 // start the state machine running: true DSM.State { id: s1 DSM.SignalTransition { targetState: s2 signal: button.clicked } onEntered: console.log("s1 entered") onExited: console.log("s1 exited") } DSM.State { id: s2 onEntered: console.log("s2 entered") onExited: console.log("s2 exited") } } }
已安装的pip包:
PyQt6 pyqt6-plugins PyQt6-Qt6 PyQt6-sip pyqt6-tools python-dotenv qt6-applications qt6-tools
已安装Arch系统包qt6-scxml,但问题依旧,询问缺失的pip包是什么,以及PyQt6是否支持运行Qt State Machine QML。
解答
- 缺失的pip包:需要安装
PyQt6-QtScxml,这是Qt SCXML组件对应的PyQt6绑定包,QtQml.StateMachine模块依赖该组件。安装命令:
pip install PyQt6-QtScxml
- PyQt6支持Qt State Machine QML:完全支持,但需注意两个关键点:
- 必须安装上述
PyQt6-QtScxml包,系统级的qt6-scxml无法被pip安装的PyQt6环境识别,两者属于独立运行环境。 - 在QML文件的
Window组件最顶部添加模块导入代码(对应代码中的DSM前缀):
import QtQml.StateMachine 1.0 as DSM - 必须安装上述
完成以上操作后,重新运行应用即可正常加载状态机QML代码。
内容的提问来源于stack exchange,提问作者satk0
相关产品推荐
相关产品推荐

