我有这个密码。
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty
class Temp(BoxLayout):
def __init__(self, iid):
BoxLayout.__init__(self)
self.id = str(iid)
def remove_content(self, iid):
#How me need use remove_widget() function?
#self.ids['tmp'].remove_widget(?)
class ScreenApp(BoxLayout):
def __init__(self):
BoxLayout.__init__(self)
self.idsum = 0
self.idsum+=1
self.ids['contents'].add_widget(Temp(iid = self.idsum))
self.idsum+=1
self.ids['contents'].add_widget(Temp(iid = self.idsum))
def add_content(self):
self.idsum+=1
self.ids['contents'].add_widget(Temp(iid = self.idsum))
class MainApp(App):
def build(self):
return ScreenApp()
if __name__ == "__main__":
MainApp().run()还有这个
<Temp@BoxLayout>
id: tmp
Button:
id: idti
text: "-"
on_press: root.remove_content(id)
Label:
id: idlbl
text: "Temp"
<ScreenApp>:
BoxLayout:
orientation: "vertical"
BoxLayout:
id: contents
orientation: "vertical"
Button:
text: "+"
on_press: root.add_content()我希望在单击按钮时删除小部件,然后将窗口小部件上升到远程小部件TM的位置,而不留下空空间。提前谢谢你。再多说几句就可以消除弹出式了。
发布于 2018-08-27 14:54:45
使用self.ids.contents.remove_widget(instance)删除对象的实例。详情请参阅有关解释及例子。
kv文件
<Temp@BoxLayout>替换为类规则、<Temp>:id: tmp,因为它不需要root.remove_content(id)替换为app.root.remove_content(root),因为我们将方法移到ScreenApp()类中,因为我们已经有了add_content()方法。id作为参数传递,而是传递root,即要删除的Temp对象的实例。text: 'Temp'替换为root.text以实现可视化。BoxLayout:,<ScreenApp>:,因为它已经是一个BoxLayout,并不需要另一个BoxLayout i.e.nested BoxLayouts。Python代码
text作为参数添加到类Temp()的构造函数方法中。self.text = texttext='Temp' + str(self.idsum)对象时添加了Temp示例
main.py
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
class Temp(BoxLayout):
def __init__(self, iid, text, **kwargs):
super(Temp, self).__init__(**kwargs)
self.id = str(iid)
self.text = text
class ScreenApp(BoxLayout):
def __init__(self):
BoxLayout.__init__(self)
self.idsum = 0
self.idsum += 1
self.ids['contents'].add_widget(Temp(iid=self.idsum, text='Temp' + str(self.idsum)))
self.idsum += 1
self.ids['contents'].add_widget(Temp(iid=self.idsum, text='Temp' + str(self.idsum)))
def add_content(self):
self.idsum+=1
self.ids['contents'].add_widget(Temp(iid=self.idsum, text='Temp' + str(self.idsum)))
def remove_content(self, instance):
self.ids.contents.remove_widget(instance)
class MainApp(App):
def build(self):
return ScreenApp()
if __name__ == "__main__":
MainApp().run()main.kv
#:kivy 1.11.0
<Temp>:
text: 'Temp'
Button:
id: idti
text: "-"
on_press: app.root.remove_content(root)
Label:
id: idlbl
text: root.text
<ScreenApp>:
orientation: "vertical"
BoxLayout:
id: contents
orientation: "vertical"
Button:
text: "+"
on_press: root.add_content()输出


https://stackoverflow.com/questions/52034573
复制相似问题