我正在开发一个大型GUI,在GUI内部,我可能会更频繁地使用以下Widget:
因此,我做了以下的kivy课程:
<ParameterFileInput@ParameterInput>
ParameterLabel:
width: root.label_width
text: root.label_text
FloatLayout:
size_hint: None, 1.0
width: 10
ParameterTextInput:
gid: root.content_id
on_text_validate: app.set_widget_content(self.gid, None)
size_hint: 0.7,1.0
text: root.preset_text
FloatLayout:
size_hint: None, 1.0
width: 10
Button:
text: "Browse"
size_hint: None, 1.0
on_press: root.button_function
width: 100
并在python中:
class ParameterInput(StackLayout):
content_id = StringProperty()
label_text = StringProperty()
preset_text = StringProperty()
label_width = NumericProperty(80)
spinner_width = NumericProperty(100)
spinner_values = ListProperty()
button_function = ObjectProperty()
当我按下按钮时应该调用的是button_function。 我的实现示例如下:
ParameterFileInput:
label_text: "data_file"
content_id: "data_file"
button_function: app.train_button()
可能不用说app.train_button()
没有被调用。
如果有人可以帮助我,我会很高兴。
问候,芬恩
答案 0 :(得分:1)
问题是在python中绑定你传递函数的名称,内部kivy调用函数,在kivy没有的情况下,所以你必须进行调用,在你的情况下解决方案是:
on_press: root.button_function()