kivy:单击 1 次按钮触发多个功能

Posted

技术标签:

【中文标题】kivy:单击 1 次按钮触发多个功能【英文标题】:kivy: firing multiple functions on 1 button click 【发布时间】: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)

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

有人吗?提前致谢!

;-) 埃里克

【问题讨论】:

【参考方案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 刚才所说的

以上是关于kivy:单击 1 次按钮触发多个功能的主要内容,如果未能解决你的问题,请参考以下文章

通过一个功能以编程方式迅速触发多个按钮

在我的 iOS 中单击按钮时,事件触发了两次。应用程序

如果选中复选框,请按 Enter 触发按钮单击

jQuery - 更改 iframe src 时仅在第二次单击时触发

Semantic-UI 避免某些按钮单击事件的表单验证触发

触发单击单选按钮可在切换前检查条件