class QScxmlStateMachine#

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

Inheritance diagram of PySide6.QtScxml.QScxmlStateMachine

摘要#

属性#

  • dataModel - 使用于本状态机的数据模型

  • initialValues - 设置数据模型的初始值

  • initialized - 状态机是否已初始化

  • invoked - 状态机是否被外部状态机调用

  • invokedServices - 从主状态机调用(可能递归)的SCXML服务的列表

  • loader - 当前用于解析和为状态机加载URI

  • name - 状态机的名称,由 <scxml> 标签的 name 属性设置

  • parseErrors - 从SCXML文件创建状态机时发生的解析错误的列表

  • running - 本状态机的运行状态

  • sessionId - 当前状态机的会话ID

  • tableData - 从SCXML文件生成C++时使用的表格数据

方法#

槽函数#

信号#

静态函数#

注意事项

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

详细描述#

QScxmlStateMachine状态图XML (SCXML)的一个实现。

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

注意事项

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

注意事项

可以直接使用from __feature__ import true_property使用时,也可以通过访问器函数在其他情况下使用属性。

属性 dataModel: QScxmlDataModel#

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

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

当状态机已被 初始化 时更改数据模型在SCXML标准中没有定义,会导致未知行为。

访问函数
属性 initialValues: 具有 .QString 类型键 QVariant 类型值 的字典#

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

另请参阅

init() QScxmlDataModel

访问函数
属性 initialized: bool#

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

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

另请参阅

init() QScxmlDataModel

访问函数
属性 invoked: bool#

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

true 如果状态机以 <invoke> 元素启动为服务,否则 false

访问函数
属性invokedServices: QScxmlInvokableService 对象的列表#

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

访问函数
属性loader: Loader#

该属性包含当前用于解决和加载状态机 URI 的加载器。

访问函数
属性name: str#

该属性包含由 <scxml> 标签的 name 属性设置的状态机名称。

访问函数
属性parseErrors: QScxmlError 对象的列表#

该属性包含在从 SCXML 文件创建状态机时发生的解析错误列表。

访问函数
属性running: bool#

该属性包含此状态机的运行状态。

另请参阅

start()

访问函数
属性sessionId: str#

该属性包含当前状态机的会话 ID。

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

另请参阅

invokeId()

访问函数
属性 tableDataᅟ QScxmlTableData#

此属性持有用于从SCXML文件生成C++时使用的表格数据。

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

访问函数
__init__(metaObject[, parent=None])#
参数:
activeStateNames([compress=true])#
参数:

compress – bool

返回类型:

字符串列表

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

当状态处于活动状态时,所有其父状态按定义也都是活动状态。当 compresstrue(默认值)时,将过滤出父状态,并且只返回 叶子状态。当它是 false 时,将返回所有激活状态的完整列表。

cancelDelayedEvent(sendId)#
参数:

sendId – str

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

connectToEvent(scxmlEventSpec, receiver, method[, type=Qt.AutoConnection])#
参数:
返回类型:

连接

创建从指定typescxmlEventSpec事件到receiver对象的method的连接。接收器的method可能以一个QScxmlEvent作为参数。例如:

void mySlot(const QScxmlEvent &event);

与SCXML文档中的事件规范不同,此处不允许在scxmlEventSpec中使用空格。为了连接到多个具有不同前缀的事件,需要多次调用connectToEvent()。

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

connectToState(scxmlStateName, receiver, method[, type=Qt.AutoConnection])#
参数:
返回类型:

连接

从由scxmlStateName识别的状态到接收器对象的method创建给定type的连接。接收器的method可以接受一个布尔参数,以指示连接的状态是变得活动还是无效。例如:

void mySlot(bool active);

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

dataModel()#
返回类型:

QScxmlDataModel

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

另请参阅

setDataModel()

属性dataModelᅟ的获取器。

dataModelChanged(model)#
参数:

modelQScxmlDataModel

属性dataModelᅟ的通知信号。

finished()#

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

另请参阅

运行中

静态 fromData(data[, fileName=""])#
参数:
返回类型:

QScxmlStateMachine

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

此方法始终返回一个状态机。如果在读取SCXML文件(文件名为 fileName)时发生错误,则状态机无法启动。可以通过调用 parseErrors() 方法获取错误信息。

另请参阅

parseErrors()

static fromFile(fileName)#
参数:

fileName – 字符串

返回类型:

QScxmlStateMachine

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

此方法始终返回一个状态机。如果在读取SCXML文件时发生错误,则状态机无法启动。可以通过调用 parseErrors() 方法获取错误信息。

另请参阅

parseErrors()

init()#
返回类型:

bool

初始化状态机。

状态机的初始化包括调用 setup() 方法,设置 <data> 元素的初始值,并执行 <scxml> 标签的任何 <script> 标签。初始数据值来自 initialValues 属性。

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

initialValues()#
返回类型:

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

另请参阅

setInitialValues()

initialValuesᅟ 属性的获取器。

initialValuesChanged(initialValues)#
参数:

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

initialValuesᅟ 属性的通知信号。

initializedChanged(initialized)#
参数:

initialized – bool

initializedᅟ 属性的通知信号。

invokedServices()#
返回类型:

.列表 of QScxmlInvokableService

属性 invokedServicesᅟ 的获取器。

invokedServicesChanged(invokedServices)#
参数:

invokedServices – .list of QScxmlInvokableService

属性 invokedServicesᅟ 的通知信号。

isActive(scxmlStateName)#
参数:

scxmlStateName – 字符串

返回类型:

bool

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

isActive(stateIndex)
参数:

stateIndex – int

返回类型:

bool

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

此方法属于 SCXML 状态机的编译表示的接口。它应仅用于内部使用以及从 SCXML 文档编译的状态机。

isDispatchableTarget(target)#
参数:

target – str

返回类型:

bool

如果此状态机可以转发到 target 的消息,则返回 true

有效的目标包括:

  • #_parent 对于父状态机,如果当前状态机是通过 <invoke> 启动的

  • #_internal 对于当前状态机

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

  • #_servicename,其中 servicename 是通过 <invoke> 启动的服务的 ID 或名称

isInitialized()#
返回类型:

bool

属性 initializedᅟ 的获取器。

isInvoked()#
返回类型:

bool

属性 invokedᅟ 的获取器。

isRunning()#
返回类型:

bool

当状态机正在运行时返回 true,否则返回 false

属性 running 的获取器。

loader()#
返回类型:

Loader

另请参阅

setLoader()

属性 loader 的获取器。

loaderChanged(loader)#
参数:

loaderLoader

属性 loader 的通知信号。

log(label, msg)#
参数:
  • label – str

  • msg – str

此信号在 SCXML 中使用 <log> 标签时发出。 label<log> 标签的 label 属性的值。 msg<log> 标签评估的 expr 属性的值。如果没有 expr 属性,将返回空字符串。

name()#
返回类型:

str

属性 name 的获取器。

parseErrors()#
返回类型:

。QScxmlError 列表

属性 parseErrors 的获取器。

reachedStableState()#

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

runningChanged(running)#
参数:

running – bool

当将带有 running 参数的 running 属性发生更改时,发出此信号。

属性 runningᅟ 的通知信号。

sessionId()#
返回类型:

str

属性 sessionIdᅟ 的获取器。

setDataModel(model)#
参数:

modelQScxmlDataModel

将状态机的数据模型设置为 model。状态机与模型之间存在一对一的关系。设置模型后无法再更改。使用此方法进一步设置模型将不予理睬。

另请参阅

dataModel()

属性 dataModelᅟ 的设置器。

setInitialValues(initialValues)#
参数:

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

另请参阅

initialValues()

属性 initialValuesᅟ 的设置器。

setLoader(loader)#
参数:

loaderLoader

另请参阅

loader()

属性 loaderᅟ 的设置器。

setRunning(running)#
参数:

running – bool

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

属性 runningᅟ 的设置器。

setTableData(tableData)#
参数:

tableDataQScxmlTableData

另请参阅

tableData()

属性 tableDataᅟ 的设置器。

start()#

启动此状态机。机器将重置其配置并转换到初始状态。当进入最终的顶级状态时,机器将发出 finished() 信号。

注意事项

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

stateNames([compress=true])#
参数:

compress – bool

返回类型:

字符串列表

检索所有状态的状态名列表。

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

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

注意事项

列表中状态名顺序是状态在 SCXML 文档中出现的顺序。

stop()#

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

submitEvent(event)#
参数:

事件QScxmlEvent

根据事件的优先级,提交 SCXML 事件 event 到内部或外部事件队列。

当设置了延迟,事件将在超时后排队发送。状态机将拥有 event 并在处理完后删除它。

submitEvent(eventName)
参数:

事件名 – str

一个创建并提交带指定eventName名称的外部事件的实用方法。

submitEvent(eventName, data)
参数:
  • 事件名 – str

  • data – 对象

以指定eventName作为名称和data作为有效载荷数据创建并提交外部事件的实用方法。

tableData()#
返回类型:

QScxmlTableData

另请参阅

setTableData()

属性tableDataᅟ的获取器。

tableDataChanged(tableData)#
参数:

tableDataQScxmlTableData

属性tableDataᅟ的通知信号。