【问题标题】:kivy: firing multiple functions on 1 button clickkivy:单击 1 次按钮触发多个功能
【发布时间】:2016-09-07 22:26:57
【问题描述】:

我有这段代码,它可以工作,但我确信这不是正确的方法。在我的 .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)

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

有人吗?提前致谢!

;-) 埃里克

【问题讨论】:

    标签: python kivy kivy-language


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回复。我已经猜到(并在 Google 上发现)有很多方法可以解决这个问题,但我想了解最有效的方法。
    【解决方案2】:

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

    on_release:
        first()
        second()
    

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

    on_release: first(); second()
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 你能分享一个代码示例吗?
      • @SimasJoneliunas 我相信他们的意思是将一个函数绑定到on_press(例如on_press: first())和另一个绑定到on_release(例如on_release: second()
      • 是的,我绝对是指@Pokechu48 刚才所说的
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-08
      • 1970-01-01
      • 1970-01-01
      • 2011-01-08
      • 1970-01-01
      • 2018-09-30
      相关资源
      最近更新 更多