我创建子窗口小部件(例如按钮)。 当我单击每个按钮(每个子窗口小部件)时,我希望从parent.children中删除单击的窗口小部件。
除了父系统笨拙之外,我无法弄清楚如何从parent.children中获取特定的单击小部件:
def DeleteWidget(self, targetWidget):
for i in self.children:
if id(i) == id(targetWidget):
self.remove_widget(i)
有什么更好的方法来删除单击的小部件?
答案 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()