Kivy作为一个财产

时间:2018-04-08 22:15:13

标签: python kivy kivy-language

我正在开发一个大型GUI,在GUI内部,我可能会更频繁地使用以下Widget:

enter image description here

因此,我做了以下的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()没有被调用。

如果有人可以帮助我,我会很高兴。

问候,芬恩

1 个答案:

答案 0 :(得分:1)

问题是在python中绑定你传递函数的名称,内部kivy调用函数,在kivy没有的情况下,所以你必须进行调用,在你的情况下解决方案是:

on_press: root.button_function()