如何删除kivy中的按钮

How can I remove a button in kivy

我是 kivy 的新手,我想让“dropbutton”和“startbutton”在按下“startbutton”时消失,但我不知道该怎么做.

我尝试了 self.remove_widget(self.startbutton) 但它给了我一个错误: " AttributeError: 'MainApp' 对象没有属性 'remove_widget' "

from kivy.app import App
from kivy.uix.dropdown import DropDown
from kivy.uix.button import Button
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
import random

Builder.load_string("""

<CustomDropDown>
    Button:
        text: "Nobara"
        size_hint_y: None
        height: 44
        on_release: root.select("Nobara")
    Button:
        text: "Maki"
        size_hint_y: None
        height: 44
        on_release: root.select("Maki")
        
""")

class CustomDropDown(DropDown):
    pass

class MainApp(App):
    def build(self):
        startbutton = Button(text='Start',
                        size_hint=(.2, .2),
                        pos_hint={'center_x': .5, 'center_y': .5})
        startbutton.bind(on_press=self.on_press_button)

        dropbutton = Button(text='Karakter',
                        size_hint=(.2, .2),
                        pos_hint={'center_x': .50, 'center_y': .5})

        dropdown = CustomDropDown()
        dropbutton.bind(on_release=dropdown.open)
        dropdown.bind(on_select = lambda instance, x : setattr(dropbutton, 'text', x))
        dropdown.bind(on_select = lambda instance, x : karaktervalasztas(x))


        boxlayout = BoxLayout()
        boxlayout.add_widget(startbutton)
        boxlayout.add_widget(dropbutton)
        return boxlayout

    def on_press_button(self, instance):
        ### the code to remove both the startbutton and the dropbutton
        start()

只需保留对这些按钮的引用,然后使用这些引用将其删除。在您的 build() 方法中:

def build(self):
    self.startbutton = Button(text='Start',
                         size_hint=(.2, .2),
                         pos_hint={'center_x': .5, 'center_y': .5})
    self.startbutton.bind(on_press=self.on_press_button)

    self.dropbutton = Button(text='Karakter',
                        size_hint=(.2, .2),
                        pos_hint={'center_x': .50, 'center_y': .5})

    dropdown = CustomDropDown()
    self.dropbutton.bind(on_release=dropdown.open)
    dropdown.bind(on_select=lambda instance, x: setattr(self.dropbutton, 'text', x))
    dropdown.bind(on_select=lambda instance, x: karaktervalasztas(x))

    boxlayout = BoxLayout()
    boxlayout.add_widget(self.startbutton)
    boxlayout.add_widget(self.dropbutton)
    return boxlayout

然后你的on_press_button()可以是:

def on_press_button(self, instance):
    self.root.remove_widget(self.startbutton)
    self.root.remove_widget(self.dropbutton)