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 次按钮触发多个功能的主要内容,如果未能解决你的问题,请参考以下文章