我正在尝试做与添加这些小部件相同的操作,但是没有成功。我正在使用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
更改
btn = Button(text="Botão",size_hint=(.1,.1))
为
self.btn = Button(text="Botão",size_hint=(.1,.1))
So,使其成为类属性。
然后像这样删除它
self.remove_widget(self.btn)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句