将当前单击的按钮作为参数传递给 Kivy (Python) 中的 on_press

Posted

技术标签:

【中文标题】将当前单击的按钮作为参数传递给 Kivy (Python) 中的 on_press【英文标题】:Pass Currently Clicked Button As Argument to on_press in Kivy (Python) 【发布时间】:2017-11-22 02:05:36 【问题描述】:

我试图在单击时删除当前按下的按钮。我的代码如下:

self.tp.get_current_tab().content.children[0].remove_widget(self.btn)
self.tp.switch_to(self.tp.get_current_tab())

但是 self.btn 会被覆盖。这是我创建按钮的地方:

self.btn = Button(text=self.btn.text, size_hint=(0.5,0.5), on_press=self.remove_filter_btn)

有没有办法将当前点击的按钮传递给remove_filter_btn?

谢谢。

【问题讨论】:

【参考方案1】:

remove_filter_btn 应该已经接收到调用按钮的实例作为参数。

示例:

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button


class MainWindow(BoxLayout):
    def __init__(self, **kwargs):
        super(MainWindow, self).__init__(**kwargs)
        self.orientation= 'vertical'
        for i in range(5):
            self.btn = Button(text='Button ' + str(i) ,
                              on_press=self.remove_filter_btn)
            self.add_widget(self.btn)

    def remove_filter_btn(self,  instance):
        self.remove_widget(instance)

class MyApp(App):
    def build(self):
        return MainWindow()

if __name__ == '__main__':
    MyApp().run()

执行:

【讨论】:

以上是关于将当前单击的按钮作为参数传递给 Kivy (Python) 中的 on_press的主要内容,如果未能解决你的问题,请参考以下文章

通过Angular组件将函数作为参数传递给(单击)事件

将视图作为参数传递给按钮,将其作为模态触发

如何通过单击 PyQt 中的按钮将参数传递给函数?

如何将两个参数传递给下一个 ViewController?

通过单击Eclipse中的“运行”按钮安装apk时如何将参数传递给ADB?

如何将模型作为参数传递给 ASP.NET MVC 中的 [HttpPost] ActionMethod?