如何在kivy中删除小部件?

时间:2016-07-20 21:25:19

标签: python kivy

我正在尝试像添加这些小部件一样,但没有成功。 我正在使用kv语言和绑定函数。使用下面的代码可以动态添加按钮,但不能删除它们。

的.py

class PrimeiroScreen(Screen):
    def __init__(self, **kwargs):
        self.name = 'um'
        super(Screen,self).__init__(**kwargs)


    def fc2(self):
        btn = Button(text="Botão",size_hint=(.1,.1))
        self.ids.grade2.add_widget(btn)     
        btn.bind(on_press=self.printa)

    def printa(self,*args):
        #btn2 = Button(text="Btn2",size_hint=(.1,.1))#I can add another btn succesfully
        self.ids.grade2.add_widget(btn2)#but I can do the same by this way
        self.remove_widget(btn)
        grade2.remove_widget(self.btn)

和.kv

<RootScreen>:
    PrimeiroScreen:

<PrimeiroScreen>:
    GridLayout:
        cols: 1
        size_hint: (.5,1)
        id: grade
        Button:
            text: "hi!"
            on_press: root.fc2()

    StackLayout:
        orientation: 'bt-rl'
        GridLayout:
            cols: 2
            size_hint: (.5,1)
            id: grade2

有人知道我犯的错误吗? Python向我展示了以下消息:

self.remove_widget(btn)
NameError: global name 'btn' is not defined

1 个答案:

答案 0 :(得分:6)

更改
btn = Button(text="Botão",size_hint=(.1,.1))

self.btn = Button(text="Botão",size_hint=(.1,.1))
所以你把它作为一个类属性。

然后像这样删除它 self.remove_widget(self.btn)