kivy中的remove_widget不会删除小部件

时间:2016-06-26 18:26:07

标签: kivy

我在使用kivy中的remove_widget删除小部件时遇到问题 我要么得到TypeError:'Label'对象没有属性' getitem '错误 或者它只是不删除已创建的标签。

我认为我没有正确地提到制作的小部件但不确定如何...

Builder.load_string("""


<MenuScreen>:
    FloatLayout:
        #cols: 2
        #rows: 2
        size: 800,480

        Button:
            id: resetmash
            text: "Reset"
            font_size: 30
            size_hint: None, None
            background_color: 1,0.88,0.882,1
            size: 100,100 
            pos: 1450,800
            on_press: root.resetmash()
        Button:
            id: btn_0
            text: "+"
            size_hint: None, None
            size: 100,100
            pos: 550,700
            on_press: root.listmashsteps()


""")


class MenuScreen(Screen):



    def resetmash(self):
        self.remove_widget(Label())   

    def listmashsteps(self, *largs):
        self.add_widget(Label(text="Step"))


    def __init__(self, **kwargs):
        super(MenuScreen, self).__init__(**kwargs)



sm = ScreenManager()
menu_screen = MenuScreen(name='menu')
sm.add_widget(menu_screen)

class TestApp(App):

    def build(self):
        return sm


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

1 个答案:

答案 0 :(得分:1)

self.remove_widget(Label())   

这没有意义 - 您只是实例化了Label,因此它尚未添加到窗口小部件中,因此您无法将其删除。

在添加标签时存储对标签的引用,如:

self.label = Label(text='Step')
self.add_widget(self.label)

然后:

self.remove_widget(self.label)