pythonで作る対話システムの2章を読んでわからなかったPySide2を用いた処理をまとめます。
#SCXMLとは
有限状態オートマトンを記述するための言語。
対話システムやマルチモーダルアプリケーションの遷移図を書くために利用されている。
#Qt for Python(PySide2)
これはpythonでSCXMLを扱うために必要。
有限状態オートマトンを表すQScxmlStateMachineというクラスがある。
from PySide2 import QtCore, QtScxml
#Qtに関するおまじない
app = Qtcore.QCoreApplication()
el = Qtcore.QEventLoop()
Qtを用いるアプリケーションではメインとなるインスタンスが必要。
そのためのapp = Qtcore.QCoreApplication()
Qtのモジュールは一般にイベントを受け取って処理を進める設計になっている。
QtScxml.QScxmlStateMachine.fromFile('states.scxml')
fileName で指定された SCXML ファイルからステートマシンを作成します。
このメソッドは常にステートマシン(有限状態オートマトンのこと?)返します。SCXML ファイルの読み込み中にエラーが発生した場合、ステートマシンを開始することはできません。エラーは、parseErrors() メソッドを呼び出すことで取得できます
parseErrors()
メゾットを追加してファイルの読み込みにエラーがあるかを調べる。
activeStateNames()
すべてのアクティブな状態の状態名のリストを取得します。
あるステートがアクティブな場合、定義上はすべての親ステートがアクティブになります。compress が true (デフォルト) の場合、親の状態はフィルタリングされ、リーフの状態だけが返されます。これが false の場合、アクティブなステートの完全なリストが返されます。
compressがfalseの場合も試してみる
activeStateNames(compress=false)