我在使用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()
答案 0 :(得分:1)
self.remove_widget(Label())
这没有意义 - 您只是实例化了Label,因此它尚未添加到窗口小部件中,因此您无法将其删除。
在添加标签时存储对标签的引用,如:
self.label = Label(text='Step')
self.add_widget(self.label)
然后:
self.remove_widget(self.label)