PySide6.QtScxml.QScxmlStateMachine

class QScxmlStateMachine

QScxmlStateMachine 类提供了一个接口,用于从 SCXML 文件创建的状态机。更多

PySide6.QtScxml.QScxmlStateMachine 的继承图

概要

属性

方法

插槽

信号

静态函数

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

QScxmlStateMachineState Chart XML (SCXML) 的一个实现。

在SCXML文件中定义的所有状态都可以作为QScxmlStateMachine的属性访问。这些属性是布尔值,表示状态是激活还是未激活。

注意

QScxmlStateMachine 需要一个 QEventLoop 才能正常工作。事件循环用于实现事件的 delay 属性,并在从嵌套(或父)状态机接收到事件时安排状态机的处理。

注意

当使用from __feature__ import true_property时,属性可以直接使用,否则通过访问器函数使用。

property dataModelᅟ: QScxmlDataModel

此属性保存用于此状态机的数据模型。

SCXML数据模型在SCXML规范 - 5 数据模型和数据操作中描述。有关支持的数据模型的更多信息,请参阅SCXML合规性

当状态机已经initialized时,更改数据模型在SCXML标准中未指定,并会导致未定义的行为。

Access functions:
property initialValuesᅟ: Dictionary with keys of type .QString and values of type QVariant.

此属性保存用于设置数据模型的初始值。

另请参阅

init() QScxmlDataModel

Access functions:
property initializedᅟ: bool

此属性保存状态机是否已初始化。

如果状态机已初始化,则为true,否则为false

另请参阅

init() QScxmlDataModel

Access functions:
property invokedᅟ: bool

此属性保存状态机是否从外部状态机调用。

true 当状态机作为服务启动时使用 元素,false 否则。

Access functions:
property invokedServicesᅟ: list of QScxmlInvokableService

此属性包含从主状态机(可能递归地)调用的SCXML服务列表。

Access functions:
property loaderᅟ: 加载器

此属性保存当前用于解析和加载状态机URI的加载器。

Access functions:
property nameᅟ: str

此属性保存由标签的name属性设置的状态机名称。

Access functions:
property parseErrorsᅟ: list of QScxmlError

此属性保存从SCXML文件创建状态机时发生的解析错误列表。

Access functions:
property runningᅟ: bool

此属性保存此状态机的运行状态。

另请参阅

start()

Access functions:
property sessionIdᅟ: str

此属性保存当前状态机的会话ID。

会话ID用于父状态机和子状态机之间的消息路由。如果状态机由元素启动,它发送的任何事件都将具有invokeid字段设置为会话ID。状态机将使用事件的来源(由元素中的targettargetexpr属性设置)将消息分派到正确的子状态机。

另请参阅

invokeId()

Access functions:
property tableDataᅟ: QScxmlTableData

此属性保存从SCXML文件生成C++时使用的表数据。

实现状态机的类将使用此属性来分配生成的表数据。状态机不承担表数据的所有权。

Access functions:
__init__(metaObject[, parent=None])
Parameters:
activeStateNames([compress=true])
Parameters:

compress – bool

Return type:

字符串列表

检索所有活动状态的州名称列表。

当一个状态处于活动状态时,根据定义,其所有父状态也处于活动状态。当compresstrue(默认值)时,父状态将被过滤掉,仅返回叶子状态。当它为false时,将返回所有活动状态的完整列表。

cancelDelayedEvent(sendId)
Parameters:

sendId – str

取消具有指定sendId的延迟事件。

connectToEvent(scxmlEventSpec, receiver, method[, type=Qt.AutoConnection])
Parameters:
Return type:

Connection

从由scxmlEventSpec指定的事件创建一个指定type的连接,连接到receiver对象中的method。接收者的method可以接受一个QScxmlEvent作为参数。例如:

void mySlot(const QScxmlEvent &event);

与SCXML文档中的事件规范不同,这里的scxmlEventSpec不允许有空格。为了连接到具有不同前缀的多个事件,必须多次调用connectToEvent()

返回连接的句柄,稍后可用于断开连接。

connectToState(scxmlStateName, receiver, method[, type=Qt.AutoConnection])
Parameters:
Return type:

Connection

从由scxmlStateName标识的状态创建一个给定type的连接,连接到receiver对象中的method。接收者的method可以接受一个布尔参数,该参数指示连接的状态是变为活动还是非活动。例如:

void mySlot(bool active);

返回连接的句柄,稍后可用于断开连接。

dataModel()
Return type:

QScxmlDataModel

返回状态机使用的数据模型。

另请参阅

setDataModel()

属性 dataModelᅟ 的获取器。

dataModelChanged(model)
Parameters:

模型QScxmlDataModel

属性 dataModelᅟ 的通知信号。

finished()

当状态机达到顶级最终状态时,会发出此信号。

另请参阅

running

static fromData(data[, fileName=""])
Parameters:
Return type:

QScxmlStateMachine

通过从data指定的QIODevice读取来创建一个状态机。

此方法将始终返回一个状态机。如果在读取SCXML文件fileName时发生错误,状态机将无法启动。可以通过调用parseErrors()方法来检索这些错误。

另请参阅

parseErrors()

static fromFile(fileName)
Parameters:

fileName – str

Return type:

QScxmlStateMachine

从由fileName指定的SCXML文件创建状态机。

此方法将始终返回一个状态机。如果在读取SCXML文件时发生错误,状态机将无法启动。可以通过调用parseErrors()方法来检索这些错误。

另请参阅

parseErrors()

init()
Return type:

布尔

初始化状态机。

状态机初始化包括调用setup(),为元素设置初始值,并执行标签中的任何

如果发生解析错误或任何初始化步骤失败,则返回false。否则返回true

initialValues()
Return type:

字典的键类型为 .QString,值类型为 QVariant。

另请参阅

setInitialValues()

属性 initialValuesᅟ 的获取器。

initialValuesChanged(initialValues)
Parameters:

initialValues – 字典,键类型为 .QString,值类型为 QVariant。

属性 initialValuesᅟ 的通知信号。

initializedChanged(initialized)
Parameters:

initialized – 布尔值

属性 initializedᅟ 的通知信号。

invokedServices()
Return type:

QScxmlInvokableService的列表

属性 invokedServicesᅟ 的获取器。

invokedServicesChanged(invokedServices)
Parameters:

invokedServices – QScxmlInvokableService 的列表

属性 invokedServicesᅟ 的通知信号。

isActive(scxmlStateName)
Parameters:

scxmlStateName – str

Return type:

布尔

如果由scxmlStateName指定的状态是活动的,则返回true,否则返回false

isActive(stateIndex)
Parameters:

stateIndex – int

Return type:

布尔

如果ID为stateIndex的状态是活动的,则返回true

此方法是SCXML状态机编译表示接口的一部分。它应仅在内部使用,并且仅由从SCXML文档编译的状态机使用。

isDispatchableTarget(target)
Parameters:

target – str

Return type:

布尔

如果可以向target发送消息,则返回true

有效的目标包括:

  • #_parent 用于父状态机,如果当前状态机是通过 启动的

  • #_internal 用于当前状态机

  • #_scxml_sessionid,其中 sessionid 是当前状态机的会话ID

  • #_servicename,其中 servicename 是由此状态机通过 启动的服务的ID或名称

isInitialized()
Return type:

布尔

属性 initializedᅟ 的获取器。

isInvoked()
Return type:

布尔

属性 invokedᅟ 的获取器。

isRunning()
Return type:

布尔

如果状态机正在运行,则返回true,否则返回false

属性 runningᅟ 的获取器。

loader()
Return type:

Loader

另请参阅

setLoader()

属性 loaderᅟ 的获取器。

loaderChanged(loader)
Parameters:

loaderLoader

属性 loaderᅟ 的通知信号。

log(label, msg)
Parameters:
  • label – str

  • msg – str

如果在SCXML中使用了标签,则会发出此信号。label标签的label属性的值。msg标签的expr属性评估后的值。如果没有expr属性,将返回一个空字符串。

name()
Return type:

字符串

获取属性 nameᅟ 的Getter。

parseErrors()
Return type:

QScxmlError的列表

属性 parseErrorsᅟ 的获取器。

reachedStableState()

当宏步骤结束时事件队列为空或达到最终状态时,会发出此信号。

runningChanged(running)
Parameters:

运行中 – bool

running属性以running作为参数更改时,会发出此信号。

属性 runningᅟ 的通知信号。

sessionId()
Return type:

字符串

属性 sessionIdᅟ 的获取器。

setDataModel(model)
Parameters:

模型QScxmlDataModel

将此状态机的数据模型设置为model。状态机和模型之间存在1:1的关系。一旦设置了模型,就不能再更改它。任何进一步尝试使用此方法设置模型的尝试都将被忽略。

另请参阅

dataModel()

属性 dataModelᅟ 的设置器。

setInitialValues(initialValues)
Parameters:

initialValues – 字典,键类型为 .QString,值类型为 QVariant。

另请参阅

initialValues()

属性 initialValuesᅟ 的设置器。

setLoader(loader)
Parameters:

loaderLoader

另请参阅

loader()

属性 loaderᅟ 的设置器。

setRunning(running)
Parameters:

运行中 – bool

如果runningtrue,则启动状态机,否则停止它。

属性 runningᅟ 的设置器。

setTableData(tableData)
Parameters:

tableDataQScxmlTableData

另请参阅

tableData()

属性 tableDataᅟ 的设置器。

start()

启动此状态机。当进入最终的顶级状态时,机器将发出finished()信号。

注意

状态机在没有运行事件循环的情况下不会运行,例如使用QCoreApplication::exec()或QApplication::exec()启动的主应用程序事件循环。

注意

stop()之后调用start()不会导致其配置的完全重置,因此强烈建议不要这样做。

注意

启动一个已完成的机器会产生警告。

stateNames([compress=true])
Parameters:

compress – bool

Return type:

字符串列表

检索所有州的州名列表。

compresstrue(默认值)时,包含子状态的状态将被过滤掉,仅返回叶子状态。当它为false时,将返回所有状态的完整列表。

返回的列表不包含可能嵌套状态机的状态。

注意

列表中州名的顺序是它们在SCXML文档中出现的顺序。

stop()

停止此状态机。机器将不会执行任何进一步的状态转换。其running属性被设置为false

submitEvent(event)
Parameters:

事件QScxmlEvent

将SCXML事件event提交到内部或外部事件队列,具体取决于事件的优先级。

当设置了延迟时,事件将在超时后排队等待传递。状态机拥有event的所有权,并在处理完成后删除它。

submitEvent(eventName)
Parameters:

eventName – str

一个实用方法,用于创建并提交一个外部事件,该事件的名称为指定的eventName

submitEvent(eventName, data)
Parameters:
  • eventName – str

  • data – 对象

一个实用方法,用于创建并提交一个外部事件,其中指定的eventName作为名称,data作为有效载荷数据。

tableData()
Return type:

QScxmlTableData

另请参阅

setTableData()

属性 tableDataᅟ 的获取器。

tableDataChanged(tableData)
Parameters:

tableDataQScxmlTableData

属性 tableDataᅟ 的通知信号。