python - 有没有办法通过 QStateMachine QState 转换传递信号参数?
问题描述
例如,假设我有一个QButtonBucket
包含一些数字N QPushButton
的类,并且我想按下这些按钮中的任何一个来导致从某个状态到另一个状态的转换。这很简单:
for button in button_bucket.get_buttons():
state_1.addTransition(button.clicked, state_2)
但是,假设我想对QPushButton
导致转换的源做一些事情,例如如果转换是 from to 则更改其颜色state_1
,或者如果转换是 from back tostate_2
则可能禁用它state_3
state_1
QStateMachine
由于 s 的异步性质,我想在逻辑的严格范围内处理这个问题QStateMachine
。我不想在QButtonBucket
.
如果有一种方法可以获取与 中标识的信号一起传递的参数addTransition
,并在进入新状态后对它们进行操作,那将非常完美。但我没有看到一个简单的解决方案来实现它。
有没有一种已知的好方法来实现我想要完成的目标?
解决方案
您可以使用QState.assignProperty (self, QObject object, str name, QVariant value)
指示状态的函数在进入状态时设置对象的属性。所以可以做这样的事情:
state_1.assignProperty(button, "enabled", false)
推荐阅读
- android - ListView 总是从 CustomAdaptor 中删除最后一行
- select - Maximo:保存动态查询?
- python - 如何以真灰度保存图片?
- sql - 枢轴问题(我错过了什么)?
- asp.net - read.Data 有什么作用?
- python - 错误:(-215:Assertion failed) npoints > 0 在使用 OpenCV 处理轮廓时
- gradle - Gradle:在多个子项目中包含相同的 SourceSet
- sas - 警告:无法扫描列的文本长度或时间类型
- perl - 如何从 anaconda 修复 Perl 而不安装 bioperl?`拯救 BioPerl-1.007002 的安装。`
- django - 将多边形或线保存到数据库 django/mapbox