4

我有这段代码,它可以工作,但我确信这不是正确的方法。在我的 .kv 中,一个按钮会在我的 main.py 中触发两个函数。

    Button:
    text: "Press Me"
    on_release: root.on_our_btn_release(text_input.text)
    on_release: root.get_items(text_input.text)

我很棒的项目的下一步将是添加更多功能,当单击同一个按钮时必须关闭这些功能。这将导致一个相当长的列表,例如:

    Button:
    text: "Press Me"
    on_release: root.on_our_btn_release(text_input.text)
    on_release: root.get_items(text_input.text)
    on_release: root.another_function(text_input.text)
    on_release: root.andanotherone(text_input.text)
    on_release: root.herewegoagain(text_input.text)
    on_release: root.this_is_getting_boring(text_input.text)
    on_release: root.think_you_got_the_picture(text_input.text)

这在我看来是非常丑陋的代码,但我还没有找到一个很好的方法来做到这一点。

任何人?提前致谢!

;-) 埃里克

4

3 回答 3

3

您可以通过多种不同的方式来构建它,而最佳选择主要取决于您。

如果您不想在 kv 中使用太多函数,一种选择是调用单个 root.do_everything(),并将所有其他调用放在 python 端。

于 2016-05-12T09:38:17.733 回答
1

我相信一个稍微更优雅的解决方案是缩进并列出不同的回调。

on_release:
    first()
    second()

另一个可能但丑陋的解决方案是用分号分隔函数。

on_release: first(); second()
于 2021-07-09T18:01:11.843 回答
0

您可以使用“on_press”和“on_release”。将一种方法/功能分配给“on_press”,另一种分配给“on_release”

于 2021-07-12T21:54:04.770 回答