【问题标题】:Kivy function as a propertyKivy 函数作为属性
【发布时间】:2018-04-09 06:47:35
【问题描述】:

我正在开发一个大型 GUI,在 GUI 内部,我可能更经常使用以下小部件:

为此,我制作了以下 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()没有被调用。

如果有人能帮我解决这个问题,我会非常高兴。

你好,芬恩

【问题讨论】:

  • 那么,函数是什么?
  • 试试:on_press: root.button_function()
  • 是的,我刚刚尝试过,它也对我有用 :) 谢谢!!
  • 如果您发布回复,您会将其标记为正确吗?
  • 另一个问题。我可以在 kv 文件中定义一个 lambda 表达式吗?所以我会写一个 lambda 表达式而不是 button_function: app.train_button?

标签: python kivy kivy-language


【解决方案1】:

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

on_press: root.button_function()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-09-28
    • 2021-04-09
    • 1970-01-01
    • 2017-12-24
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多