【发布时间】:2019-04-18 21:18:05
【问题描述】:
我正在 kivy 中创建一些小部件以重复使用它们。如何传递方法和属性来初始化新的小部件?我实现了传递字符串变量并且效果很好,但是方法和属性会发生什么?
这是我要重复使用的小部件:
<ParameterInput>:
text: ''
icon: ''
suffix: ''
data: ''
check_data: ''
BoxLayout:
Label:
text: root.text + ':'
BoxLayout:
Image:
size_hint_x: 0.2
source: root.icon
TextInput:
text: root.data
on_text: root.data = self.text
on_focus: root.check_data(self, self.focus)
Label:
text: root.suffix
这就是我想要重用它的方式:
ParameterInput:
id: temp_param
text: 'Temperature'
icon: './images/thermometer.png'
suffix: '\u00B0' + 'C'
data: app.parameters.temperature
check_data: app.parameters.check_temp
ParameterInput:
id: param_2
text: 'Param 2'
icon: './images/param_2.png'
suffix: '\u00B0' + 'C'
data: app.parameters.param_2
check_data: app.parameters.check_param_2
文本、图标和后缀效果很好,因为它们只是字符串,但数据是 StringProperty 并且不会更新。另一个问题是,如果我在 check_data 中传递一个方法,应用程序就会崩溃。
编辑:
如何将 MyLayout 用作组件,例如:
MyLayout:
check_data1: app.ch1
check_data2: app.ch2
其中 check_data1 和 check_data2 是按钮的方法。
【问题讨论】: