簡體   English   中英

如何刪除 kivy 中的按鈕

[英]How can I remove a button in kivy

我是 kivy 的新手,我想讓“dropbutton”和“startbutton”在按下“startbutton”時消失,但我不知道該怎么做。

我嘗試了 self.remove_widget(self.startbutton) 但它給了我一個錯誤:“ AttributeError: 'MainApp' object has no attribute '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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM