2017-06-19 119 views
2

我试图在单击它时删除当前按下的按钮。我的代码如下:将当前点击的按钮传递给Kivy中的on_press(Python)

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?

谢谢。

回答

2

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() 

执行:

enter image description here

+0

感谢。这很好。 – user48944