PySide6.QtScxml.QScxmlStateMachine¶
- class QScxmlStateMachine¶
QScxmlStateMachine
类提供了一个接口,用于从 SCXML 文件创建的状态机。更多…概要¶
属性¶
dataModelᅟ
- 用于此状态机的数据模型initialValuesᅟ
- 用于设置数据模型的初始值initializedᅟ
- 状态机是否已初始化invokedᅟ
- 状态机是否从外部状态机调用invokedServicesᅟ
- 从主状态机(可能是递归地)调用的SCXML服务列表loaderᅟ
- 当前用于解析和加载状态机的URInameᅟ
- 状态机的名称,由标签的name属性设置 parseErrorsᅟ
- 从SCXML文件创建状态机时发生的解析错误列表runningᅟ
- 此状态机的运行状态sessionIdᅟ
- 当前状态机的会话IDtableDataᅟ
- 用于从SCXML文件生成C++时的表格数据
方法¶
def
__init__()
def
connectToEvent()
def
connectToState()
def
dataModel()
def
initialValues()
def
isActive()
def
isInitialized()
def
isInvoked()
def
isRunning()
def
loader()
def
name()
def
parseErrors()
def
sessionId()
def
setDataModel()
def
setLoader()
def
setRunning()
def
setTableData()
def
stateNames()
def
submitEvent()
def
tableData()
插槽¶
信号¶
def
finished()
def
loaderChanged()
def
log()
def
runningChanged()
静态函数¶
def
fromData()
def
fromFile()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
QScxmlStateMachine
是 State 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.¶
此属性保存用于设置数据模型的初始值。
另请参阅
- Access functions:
- property initializedᅟ: bool¶
此属性保存状态机是否已初始化。
如果状态机已初始化,则为
true
,否则为false
。另请参阅
- Access functions:
- property invokedᅟ: bool¶
此属性保存状态机是否从外部状态机调用。
true
当状态机作为服务启动时使用
元素,false
否则。- Access functions:
- property invokedServicesᅟ: list of QScxmlInvokableService¶
此属性包含从主状态机(可能递归地)调用的SCXML服务列表。
- Access functions:
此属性保存当前用于解析和加载状态机URI的加载器。
- Access functions:
- property nameᅟ: str¶
此属性保存由
标签的name属性设置的状态机名称。- Access functions:
- property parseErrorsᅟ: list of QScxmlError¶
此属性保存从SCXML文件创建状态机时发生的解析错误列表。
- Access functions:
- property runningᅟ: bool¶
此属性保存此状态机的运行状态。
另请参阅
- Access functions:
- property sessionIdᅟ: str¶
此属性保存当前状态机的会话ID。
会话ID用于父状态机和子状态机之间的消息路由。如果状态机由
元素启动,它发送的任何事件都将具有invokeid
字段设置为会话ID。状态机将使用事件的来源(由
元素中的target或targetexpr属性设置)将消息分派到正确的子状态机。另请参阅
- Access functions:
- property tableDataᅟ: QScxmlTableData¶
此属性保存从SCXML文件生成C++时使用的表数据。
实现状态机的类将使用此属性来分配生成的表数据。状态机不承担表数据的所有权。
- Access functions:
- __init__(metaObject[, parent=None])¶
- Parameters:
metaObject –
QMetaObject
parent –
QObject
- activeStateNames([compress=true])¶
- Parameters:
compress – bool
- Return type:
字符串列表
检索所有活动状态的州名称列表。
当一个状态处于活动状态时,根据定义,其所有父状态也处于活动状态。当
compress
为true
(默认值)时,父状态将被过滤掉,仅返回叶子状态。当它为false
时,将返回所有活动状态的完整列表。- cancelDelayedEvent(sendId)¶
- Parameters:
sendId – str
取消具有指定
sendId
的延迟事件。- connectToEvent(scxmlEventSpec, receiver, method[, type=Qt.AutoConnection])¶
- Parameters:
scxmlEventSpec – str
receiver –
QObject
method – str
type –
ConnectionType
- Return type:
从由
scxmlEventSpec
指定的事件创建一个指定type
的连接,连接到receiver
对象中的method
。接收者的method
可以接受一个QScxmlEvent
作为参数。例如:void mySlot(const QScxmlEvent &event);
与SCXML文档中的事件规范不同,这里的
scxmlEventSpec
不允许有空格。为了连接到具有不同前缀的多个事件,必须多次调用connectToEvent()
。返回连接的句柄,稍后可用于断开连接。
- connectToState(scxmlStateName, receiver, method[, type=Qt.AutoConnection])¶
- Parameters:
scxmlStateName – str
receiver –
QObject
method – str
type –
ConnectionType
- Return type:
从由
scxmlStateName
标识的状态创建一个给定type
的连接,连接到receiver
对象中的method
。接收者的method
可以接受一个布尔参数,该参数指示连接的状态是变为活动还是非活动。例如:void mySlot(bool active);
返回连接的句柄,稍后可用于断开连接。
- dataModel()¶
- Return type:
返回状态机使用的数据模型。
另请参阅
属性
dataModelᅟ
的获取器。- dataModelChanged(model)¶
- Parameters:
模型 –
QScxmlDataModel
属性
dataModelᅟ
的通知信号。- finished()¶
当状态机达到顶级最终状态时,会发出此信号。
另请参阅
running
通过从
data
指定的QIODevice读取来创建一个状态机。此方法将始终返回一个状态机。如果在读取SCXML文件
fileName
时发生错误,状态机将无法启动。可以通过调用parseErrors()
方法来检索这些错误。另请参阅
- static fromFile(fileName)¶
- Parameters:
fileName – str
- Return type:
从由
fileName
指定的SCXML文件创建状态机。此方法将始终返回一个状态机。如果在读取SCXML文件时发生错误,状态机将无法启动。可以通过调用
parseErrors()
方法来检索这些错误。另请参阅
- init()¶
- Return type:
布尔
初始化状态机。
状态机初始化包括调用
setup()
,为元素设置初始值,并执行
标签中的任何如果发生解析错误或任何初始化步骤失败,则返回
false
。否则返回true
。- initialValues()¶
- Return type:
字典的键类型为 .QString,值类型为 QVariant。
另请参阅
属性
initialValuesᅟ
的获取器。- initialValuesChanged(initialValues)¶
- Parameters:
initialValues – 字典,键类型为 .QString,值类型为 QVariant。
属性
initialValuesᅟ
的通知信号。- initializedChanged(initialized)¶
- Parameters:
initialized – 布尔值
属性
initializedᅟ
的通知信号。- invokedServices()¶
- Return type:
属性
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ᅟ
的获取器。属性
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ᅟ
的设置器。- setInitialValues(initialValues)¶
- Parameters:
initialValues – 字典,键类型为 .QString,值类型为 QVariant。
另请参阅
属性
initialValuesᅟ
的设置器。属性
loaderᅟ
的设置器。- setRunning(running)¶
- Parameters:
运行中 – bool
如果
running
为true
,则启动状态机,否则停止它。属性
runningᅟ
的设置器。- setTableData(tableData)¶
- Parameters:
tableData –
QScxmlTableData
另请参阅
属性
tableDataᅟ
的设置器。- start()¶
启动此状态机。当进入最终的顶级状态时,机器将发出
finished()
信号。注意
状态机在没有运行事件循环的情况下不会运行,例如使用QCoreApplication::exec()或QApplication::exec()启动的主应用程序事件循环。
注意
在
stop()
之后调用start()不会导致其配置的完全重置,因此强烈建议不要这样做。- stateNames([compress=true])¶
- Parameters:
compress – bool
- Return type:
字符串列表
检索所有州的州名列表。
当
compress
为true
(默认值)时,包含子状态的状态将被过滤掉,仅返回叶子状态。当它为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:
另请参阅
属性
tableDataᅟ
的获取器。- tableDataChanged(tableData)¶
- Parameters:
tableData –
QScxmlTableData
属性
tableDataᅟ
的通知信号。