remove_widget kivy不要按名称删除

时间:2019-12-17 13:06:48

标签: kivy

我有此代码,使用该窗口小部件的名称MainApp()无法删除该窗口小部件。 m.remove_widget(Butt())。

我了解我错误地访问了此小部件,但是我不知道如何正确地进行操作。 告诉我如何使用小工具的名称删除小工具?

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.colorpicker import ColorPicker
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.button import Button


class Butt(Button):
    def add_wid1(self):
        MainApp.m.add_widget(Box())
        MainApp.m.add_widget(Butt1())


class Butt1(Button):
    def on_press(self):
        print('111')
        MainApp().m.remove_widget(MainApp().m.children[1])    #this code works
        MainApp().m.remove_widget(Butt())    #this code not working


class Box (ColorPicker):
    size_hint=.50, .25


class Pict (Widget):
    pass


class MainApp (App):
    m = FloatLayout()
    def build (self):
        pic = Pict()
        MainApp.m.add_widget(pic)
        MainApp.m.add_widget(Butt())
        return MainApp.m

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

1 个答案:

答案 0 :(得分:0)

您必须使用要删除的Butt的实例。一种简单的方法是在您的Butt方法中保存对该build的引用:

self.butt = Butt()
MainApp.m.add_widget(self.butt)

,然后使用以下命令将其删除:

app = App.get_running_app()
MainApp.m.remove_widget(app.butt)