You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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。

解答
  1. 缺失的pip包:需要安装PyQt6-QtScxml,这是Qt SCXML组件对应的PyQt6绑定包,QtQml.StateMachine模块依赖该组件。安装命令:
pip install PyQt6-QtScxml
  1. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 11:30:10