QScxmlStateMachine#
The QScxmlStateMachine
class provides an interface to the state machines created from SCXML files. More…
Synopsis#
Properties#
dataModel
- Data model to be used for this state machineinitialValues
- Initial values to be used for setting up the data modelinitialized
- Whether the state machine has been initializedinvoked
- Whether the state machine was invoked from an outer state machineinvokedServices
- A list of SCXML services that were invoked from the main state machine (possibly recursively)loader
- That is currently used to resolve and load URIs for the state machinename
- Of the state machine as set by the name attribute of the <scxml> tagparseErrors
- List of parse errors that occurred while creating a state machine from an SCXML filerunning
- The running state of this state machinesessionId
- Session ID of the current state machinetableData
- Table data that is used when generating C++ from an SCXML file
Functions#
def
activeStateNames
([compress=true])def
cancelDelayedEvent
(sendId)def
connectToEvent
(scxmlEventSpec, receiver, method[, type=Qt.AutoConnection])def
connectToState
(scxmlStateName, receiver, method[, type=Qt.AutoConnection])def
dataModel
()def
initialValues
()def
invokedServices
()def
isActive
(scxmlStateName)def
isActive
(stateIndex)def
isDispatchableTarget
(target)def
isInitialized
()def
isInvoked
()def
isRunning
()def
loader
()def
name
()def
parseErrors
()def
sessionId
()def
setDataModel
(model)def
setInitialValues
(initialValues)def
setLoader
(loader)def
setRunning
(running)def
setTableData
(tableData)def
stateNames
([compress=true])def
submitEvent
(event)def
submitEvent
(eventName)def
submitEvent
(eventName, data)def
tableData
()
Slots#
Signals#
def
dataModelChanged
(model)def
finished
()def
initialValuesChanged
(initialValues)def
initializedChanged
(initialized)def
invokedServicesChanged
(invokedServices)def
loaderChanged
(loader)def
log
(label, msg)def
reachedStableState
()def
runningChanged
(running)def
tableDataChanged
(tableData)
Static functions#
Note
This documentation may contain snippets that were automatically translated from C++ to Python. We always welcome contributions to the snippet translation. If you see an issue with the translation, you can also let us know by creating a ticket on https:/bugreports.qt.io/projects/PYSIDE
Detailed Description#
QScxmlStateMachine
is an implementation of the State Chart XML (SCXML) .
All states that are defined in the SCXML file are accessible as properties of QScxmlStateMachine
. These properties are boolean values and indicate whether the state is active or inactive.
Note
The QScxmlStateMachine
needs a QEventLoop to work correctly. The event loop is used to implement the delay
attribute for events and to schedule the processing of a state machine when events are received from nested (or parent) state machines.
- class PySide6.QtScxml.QScxmlStateMachine(metaObject[, parent=None])#
- Parameters:
metaObject –
PySide6.QtCore.QMetaObject
parent –
PySide6.QtCore.QObject
Note
Properties can be used directly when from __feature__ import true_property
is used or via accessor functions otherwise.
- property PᅟySide6.QtScxml.QScxmlStateMachine.dataModel: PySide6.QtScxml.QScxmlDataModel#
This property holds The data model to be used for this state machine..
SCXML data models are described in SCXML Specification - 5 Data Model and Data Manipulation . For more information about supported data models, see SCXML Compliance .
Changing the data model when the state machine has been initialized
is not specified in the SCXML standard and leads to undefined behavior.
- Access functions:
dataModel
()setDataModel
(model)Signal
dataModelChanged
(model)
- property PᅟySide6.QtScxml.QScxmlStateMachine.initialValues: Dictionary with keys of type .QString and values of type QVariant.#
This property holds The initial values to be used for setting up the data model..
See also
- Access functions:
setInitialValues
(initialValues)Signal
initialValuesChanged
(initialValues)
- property PᅟySide6.QtScxml.QScxmlStateMachine.initialized: bool#
This property holds Whether the state machine has been initialized..
It is true
if the state machine has been initialized, false
otherwise.
See also
- Access functions:
Signal
initializedChanged
(initialized)
- property PᅟySide6.QtScxml.QScxmlStateMachine.invoked: bool#
This property holds Whether the state machine was invoked from an outer state machine..
true
when the state machine was started as a service with the <invoke>
element, false
otherwise.
- Access functions:
isInvoked
()
- property PᅟySide6.QtScxml.QScxmlStateMachine.invokedServices: list of QScxmlInvokableService#
This property holds A list of SCXML services that were invoked from the main state machine (possibly recursively)..
- Access functions:
Signal
invokedServicesChanged
(invokedServices)
- property PᅟySide6.QtScxml.QScxmlStateMachine.loader: PySide6.QtScxml.QScxmlCompiler.Loader#
This property holds The loader that is currently used to resolve and load URIs for the state machine..
- Access functions:
loader
()setLoader
(loader)Signal
loaderChanged
(loader)
- property PᅟySide6.QtScxml.QScxmlStateMachine.name: str#
This property holds The name of the state machine as set by the name attribute of the <scxml>
tag..
- Access functions:
name
()
- property PᅟySide6.QtScxml.QScxmlStateMachine.parseErrors: list of QScxmlError#
This property holds The list of parse errors that occurred while creating a state machine from an SCXML file..
- Access functions:
parseErrors
()
- property PᅟySide6.QtScxml.QScxmlStateMachine.running: bool#
This property holds the running state of this state machine.
See also
- Access functions:
isRunning
()setRunning
(running)Signal
runningChanged
(running)
- property PᅟySide6.QtScxml.QScxmlStateMachine.sessionId: str#
This property holds The session ID of the current state machine..
The session ID is used for message routing between parent and child state machines. If a state machine is started by an <invoke>
element, any event it sends will have the invokeid
field set to the session ID. The state machine will use the origin of an event (which is set by the target or targetexpr attribute in a <send>
element) to dispatch messages to the correct child state machine.
See also
- Access functions:
sessionId
()
- property PᅟySide6.QtScxml.QScxmlStateMachine.tableData: PySide6.QtScxml.QScxmlTableData#
This property holds The table data that is used when generating C++ from an SCXML file..
The class implementing the state machine will use this property to assign the generated table data. The state machine does not assume ownership of the table data.
- Access functions:
tableData
()setTableData
(tableData)Signal
tableDataChanged
(tableData)
- PySide6.QtScxml.QScxmlStateMachine.activeStateNames([compress=true])#
- Parameters:
compress – bool
- Return type:
list of strings
Retrieves a list of state names of all active states.
When a state is active, all its parent states are active by definition. When compress
is true
(the default), the parent states will be filtered out and only the leaf states will be returned. When it is false
, the full list of active states will be returned.
- PySide6.QtScxml.QScxmlStateMachine.cancelDelayedEvent(sendId)#
- Parameters:
sendId – str
Cancels a delayed event with the specified sendId
.
- PySide6.QtScxml.QScxmlStateMachine.connectToEvent(scxmlEventSpec, receiver, method[, type=Qt.AutoConnection])#
- Parameters:
scxmlEventSpec – str
receiver –
PySide6.QtCore.QObject
method – str
type –
ConnectionType
- Return type:
Creates a connection of the specified type
from the event specified by scxmlEventSpec
to the method
in the receiver
object. The receiver’s method
may take a QScxmlEvent
as a parameter. For example:
void mySlot(const QScxmlEvent &event);
In contrast to event specifications in SCXML documents, spaces are not allowed in the scxmlEventSpec
here. In order to connect to multiple events with different prefixes, connectToEvent() has to be called multiple times.
Returns a handle to the connection, which can be used later to disconnect.
- PySide6.QtScxml.QScxmlStateMachine.connectToState(scxmlStateName, receiver, method[, type=Qt.AutoConnection])#
- Parameters:
scxmlStateName – str
receiver –
PySide6.QtCore.QObject
method – str
type –
ConnectionType
- Return type:
Creates a connection of the given type
from the state identified by scxmlStateName
to the method
in the receiver
object. The receiver’s method
may take a boolean argument that indicates whether the state connected became active or inactive. For example:
void mySlot(bool active);
Returns a handle to the connection, which can be used later to disconnect.
- PySide6.QtScxml.QScxmlStateMachine.dataModel()#
- Return type:
Returns the data model used by the state machine.
See also
Getter of property dataModel
.
- PySide6.QtScxml.QScxmlStateMachine.dataModelChanged(model)#
- Parameters:
model –
PySide6.QtScxml.QScxmlDataModel
Notification signal of property dataModel
.
- PySide6.QtScxml.QScxmlStateMachine.finished()#
This signal is emitted when the state machine reaches a top-level final state.
See also
running
- static PySide6.QtScxml.QScxmlStateMachine.fromData(data[, fileName=""])#
- Parameters:
data –
PySide6.QtCore.QIODevice
fileName – str
- Return type:
Creates a state machine by reading from the QIODevice specified by data
.
This method will always return a state machine. If errors occur while reading the SCXML file, fileName
, the state machine cannot be started. The errors can be retrieved by calling the parseErrors()
method.
See also
- static PySide6.QtScxml.QScxmlStateMachine.fromFile(fileName)#
- Parameters:
fileName – str
- Return type:
Creates a state machine from the SCXML file specified by fileName
.
This method will always return a state machine. If errors occur while reading the SCXML file, the state machine cannot be started. The errors can be retrieved by calling the parseErrors()
method.
See also
- PySide6.QtScxml.QScxmlStateMachine.init()#
- Return type:
bool
Initializes the state machine.
State machine initialization consists of calling setup()
, setting the initial values for <data>
elements, and executing any <script>
tags of the <scxml>
tag. The initial data values are taken from the initialValues
property.
Returns false
if parse errors occur or if any of the initialization steps fail. Returns true
otherwise.
- PySide6.QtScxml.QScxmlStateMachine.initialValues()#
- Return type:
Dictionary with keys of type .QString and values of type QVariant.
See also
Getter of property initialValues
.
- PySide6.QtScxml.QScxmlStateMachine.initialValuesChanged(initialValues)#
- Parameters:
initialValues – Dictionary with keys of type .QString and values of type QVariant.
Notification signal of property initialValues
.
- PySide6.QtScxml.QScxmlStateMachine.initializedChanged(initialized)#
- Parameters:
initialized – bool
Notification signal of property initialized
.
- PySide6.QtScxml.QScxmlStateMachine.invokedServices()#
- Return type:
.list of QScxmlInvokableService
Getter of property invokedServices
.
- PySide6.QtScxml.QScxmlStateMachine.invokedServicesChanged(invokedServices)#
- Parameters:
invokedServices – .list of QScxmlInvokableService
Notification signal of property invokedServices
.
- PySide6.QtScxml.QScxmlStateMachine.isActive(scxmlStateName)#
- Parameters:
scxmlStateName – str
- Return type:
bool
Returns true
if the state specified by scxmlStateName
is active, false
otherwise.
- PySide6.QtScxml.QScxmlStateMachine.isActive(stateIndex)
- Parameters:
stateIndex – int
- Return type:
bool
Returns true
if the state with the ID stateIndex
is active.
This method is part of the interface to the compiled representation of SCXML state machines. It should only be used internally and by state machines compiled from SCXML documents.
- PySide6.QtScxml.QScxmlStateMachine.isDispatchableTarget(target)#
- Parameters:
target – str
- Return type:
bool
Returns true
if a message to target
can be dispatched by this state machine.
Valid targets are:
#_parent
for the parent state machine if the current state machine is started by<invoke>
#_internal
for the current state machine
#_scxml_sessionid
, wheresessionid
is the session ID of the current state machine
#_servicename
, whereservicename
is the ID or name of a service started with<invoke>
by this state machine
- PySide6.QtScxml.QScxmlStateMachine.isInitialized()#
- Return type:
bool
Getter of property initialized
.
- PySide6.QtScxml.QScxmlStateMachine.isInvoked()#
- Return type:
bool
Getter of property invoked
.
- PySide6.QtScxml.QScxmlStateMachine.isRunning()#
- Return type:
bool
Returns true
if the state machine is running, false
otherwise.
See also
Getter of property running
.
- PySide6.QtScxml.QScxmlStateMachine.loader()#
- Return type:
See also
Getter of property loader
.
- PySide6.QtScxml.QScxmlStateMachine.loaderChanged(loader)#
- Parameters:
Notification signal of property loader
.
- PySide6.QtScxml.QScxmlStateMachine.log(label, msg)#
- Parameters:
label – str
msg – str
This signal is emitted if a <log>
tag is used in the SCXML. label
is the value of the label attribute of the <log>
tag. msg
is the value of the evaluated expr attribute of the <log>
tag. If there is no expr attribute, a null string will be returned.
- PySide6.QtScxml.QScxmlStateMachine.name()#
- Return type:
str
Getter of property name
.
- PySide6.QtScxml.QScxmlStateMachine.parseErrors()#
- Return type:
.list of QScxmlError
Getter of property parseErrors
.
- PySide6.QtScxml.QScxmlStateMachine.reachedStableState()#
This signal is emitted when the event queue is empty at the end of a macro step or when a final state is reached.
- PySide6.QtScxml.QScxmlStateMachine.runningChanged(running)#
- Parameters:
running – bool
This signal is emitted when the running
property is changed with running
as argument.
Notification signal of property running
.
- PySide6.QtScxml.QScxmlStateMachine.sessionId()#
- Return type:
str
Getter of property sessionId
.
- PySide6.QtScxml.QScxmlStateMachine.setDataModel(model)#
- Parameters:
model –
PySide6.QtScxml.QScxmlDataModel
Sets the data model for this state machine to model
. There is a 1:1 relation between state machines and models. After setting the model once you cannot change it anymore. Any further attempts to set the model using this method will be ignored.
See also
Setter of property dataModel
.
- PySide6.QtScxml.QScxmlStateMachine.setInitialValues(initialValues)#
- Parameters:
initialValues – Dictionary with keys of type .QString and values of type QVariant.
See also
Setter of property initialValues
.
- PySide6.QtScxml.QScxmlStateMachine.setLoader(loader)#
- Parameters:
See also
Setter of property loader
.
- PySide6.QtScxml.QScxmlStateMachine.setRunning(running)#
- Parameters:
running – bool
Starts the state machine if running
is true
, or stops it otherwise.
See also
Setter of property running
.
- PySide6.QtScxml.QScxmlStateMachine.setTableData(tableData)#
- Parameters:
tableData –
PySide6.QtScxml.QScxmlTableData
See also
Setter of property tableData
.
- PySide6.QtScxml.QScxmlStateMachine.start()#
Starts this state machine. The machine will reset its configuration and transition to the initial state. When a final top-level state is entered, the machine will emit the finished()
signal.
Note
A state machine will not run without a running event loop, such as the main application event loop started with QCoreApplication::exec() or QApplication::exec().
See also
- PySide6.QtScxml.QScxmlStateMachine.stateNames([compress=true])#
- Parameters:
compress – bool
- Return type:
list of strings
Retrieves a list of state names of all states.
When compress
is true
(the default), the states that contain child states will be filtered out and only the leaf states will be returned. When it is false
, the full list of all states will be returned.
The returned list does not contain the states of possible nested state machines.
Note
The order of the state names in the list is the order in which the states occurred in the SCXML document.
- PySide6.QtScxml.QScxmlStateMachine.stop()#
Stops this state machine. The machine will not execute any further state transitions. Its running
property is set to false
.
See also
- PySide6.QtScxml.QScxmlStateMachine.submitEvent(event)#
- Parameters:
event –
PySide6.QtScxml.QScxmlEvent
Submits the SCXML event event
to the internal or external event queue depending on the priority of the event.
When a delay is set, the event will be queued for delivery after the timeout has passed. The state machine takes ownership of event
and deletes it after processing.
- PySide6.QtScxml.QScxmlStateMachine.submitEvent(eventName)
- Parameters:
eventName – str
A utility method to create and submit an external event with the specified eventName
as the name.
- PySide6.QtScxml.QScxmlStateMachine.submitEvent(eventName, data)
- Parameters:
eventName – str
data – object
A utility method to create and submit an external event with the specified eventName
as the name and data
as the payload data.
- PySide6.QtScxml.QScxmlStateMachine.tableData()#
- Return type:
See also
Getter of property tableData
.
- PySide6.QtScxml.QScxmlStateMachine.tableDataChanged(tableData)#
- Parameters:
tableData –
PySide6.QtScxml.QScxmlTableData
Notification signal of property tableData
.