Android 如何使用remove_widget()函数?

Android 如何使用remove_widget()函数?,android,python,python-3.x,kivy,kivy-language,Android,Python,Python 3.x,Kivy,Kivy Language,我有这个密码 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_cont

我有这个密码

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()

id:tmp
按钮:
id:idti
正文:“-”
按:根目录。删除内容(id)
标签:
id:idlbl
文本:“临时”
:
盒子布局:
方向:“垂直”
盒子布局:
id:目录
方向:“垂直”
按钮:
正文:“+”
按:root.add\u content()
我想删除一个按钮点击小部件和底部的小部件上升到远程小部件TM最没有留下一个空白的地方。先谢谢你。
要删除弹出窗口,请多说几句。

使用
self.ids.contents.remove\u小部件(实例)
删除对象的实例。有关详细信息,请参阅说明和示例

kv文件
  • 将动态类
    替换为类规则
  • 删除
    id:tmp
    ,因为它不需要
  • root.remove_content(id)
    替换为
    app.root.remove_content(root)
    ,因为我们正在将该方法移到类ScreenApp()中,因为我们已经有了
    add_content()
    方法
  • 我们不是将
    id
    作为参数传递,而是传递
    root
    即要删除的
    Temp
    对象的实例
  • text:'Temp'
    替换为
    root.text
    进行可视化
  • 删除了类规则下的第一个
    BoxLayout:
    ,因为它已经是一个BoxLayout,不需要另一个BoxLayout,即嵌套的BoxLayouts
  • Python代码
  • 添加了
    text
    作为类
    Temp()
    的构造函数方法的参数
  • 为分配添加了
    self.text=text
  • 在实例化
    Temp
    对象时添加了
    text='Temp'+str(self.idsum)
  • 例子 main.py 主电压(千伏)
    #:kivy 1.11.0
    :
    文本:“临时”
    按钮:
    id:idti
    正文:“-”
    按:app.root。删除内容(root)
    标签:
    id:idlbl
    text:root.text
    :
    方向:“垂直”
    盒子布局:
    id:目录
    方向:“垂直”
    按钮:
    正文:“+”
    按:root.add\u content()
    
    输出

    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()
    
    #: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()