数据绑定

通常情况下,插件通过 getControlValue 获取控件数据,通过 updateControlValue 更新控件数据。

也可以使用数据双向绑定,将控件数据与插件成员变量进行关联。

双向绑定的方法是,在控件创建时,使用 ':value': '变量名' 的形式初始化,此时该控件个相应的变量会建立对应关系:

  • 当 python 变量值发生变化时,会自动更新控件值;
  • 当读取 python 变量值时,会从控件上获取控件最新值;
class myplugin(StellarPlayer.IStellarPlayerPlugin):
    def __init__(self,player:StellarPlayer.IStellarPlayer):
        super().__init__(player)
        self.a = 'hello'

    def show(self):
        controls = [
            [
                {
                    'type':'edit',
                    'name':'测试',
                    'height': 40, 
                    'textColor': '#772244', 
                    'fontSize': 18,
                    ':value': 'a'
                },
                {
                    'type':'button',
                    'name':'test',
                    'height': 40, 
                    'textColor': '#7722ff', 
                    'fontSize': 18,
                    'value': 'hello',
                    '@click': 'on_hello'
                }
            ],
            {'type':'space'}
        ]
        self.doModal('main',600, 500,'测试', controls)

    def on_hello(self, *a):
        self.a = self.a + '~'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

image control

如果是 list 类型的数据绑定到控件上,当 list 值发生变化后,需要显式赋值触发控件 value 的刷新

self.data.append(1)
self.data = self.data
1
2

由于 list 和 grid 是内容展示类型的控件,所以只支持从 python 变量到控件值的绑定。