如何删除点击的小部件?

时间:2019-02-09 08:33:28

标签: kivy

我创建子窗口小部件(例如按钮)。 当我单击每个按钮(每个子窗口小部件)时,我希望从parent.children中删除单击的窗口小部件。

除了父系统笨拙之外,我无法弄清楚如何从parent.children中获取特定的单击小部件:

def DeleteWidget(self, targetWidget):
    for i in self.children:
      if id(i) == id(targetWidget):
        self.remove_widget(i)

有什么更好的方法来删除单击的小部件?

1 个答案:

答案 0 :(得分:1)

您可以将每个按钮的on_press属性绑定到您的类方法DeleteWidget上,如下所示:

btn1 = Button(text= "Button 1")
btn1.bind(on_press = self.DeleteWidget)

按下btn1时,它将执行您的DeleteWidget方法,该方法将带有一个参数(在这种情况下,是带有地址的按钮对象)。

def DeleteWidget(self, *args):
    self.remove_widget(args[0])

这是一个基本示例:

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.button import *
from kivy.uix.boxlayout import *

class TestApp(App):

    def build(self):        
        bx = BoxLayout(orientation = 'vertical')        
        btn1 = Button(text="Button 1")
        btn1.bind(on_press = self.deleteButton)
        bx.add_widget(btn1)
        btn2 = Button(text="Button 2")
        btn2.bind(on_press = self.deleteButton)
        bx.add_widget(btn2)
        return bx

    def deleteButton(self, x):
        self.root.remove_widget(x)

TestApp().run()