之前在 NowDoForm类中定义了一个信号now_signal
这个信号是一个固定格式的列表,内容固定为:
[[当前动作的工作状态],[限位0,限位1...],[[节点0_0, 节点0_1,...],[节点1_0, 节点1_1,...],...[节点n_0, 节点n_1,...]]
以“炉门右移”画面为例:
当将这个画面的now_signal信号emit([[True],[False,True],[[True]]]),信号值与画面的映射关系如下:
画面就会按照变量的分配更新。
进一步的,把每一个画面的now_signal信号绑定之前定义的PLC变量,就可以实现画面按照变量的的更新自动更新。
以“炉门右移”画面为例:
# UI管理器 um = UiManager() # 画面的now_signal信号绑定 um.bond([变量表.Q炉门平移右移.valueChanged, 变量表.限炉门左.valueChanged, 变量表.限炉门右.valueChanged, 变量表.限门锁闭左开.valueChanged], lambda :proxy_DoorRight.widget.now_signal.emit([[变量表.Q炉门平移右移],[变量表.限炉门左,变量表.限炉门右],[[变量表.限门锁闭左开]]]))就可以把变量绑定到画面,当变量发生变化后自动更新画面。
同样的方法,绑定变量到所有的动态画面。