Kivy Как переключаться между кнопками друг над другом

#python #kivy

#python #kivy

Вопрос:

У меня есть две кнопки друг над другом, я хочу, чтобы первая была видимой и интерактивной..

Но по какой-то причине я вижу первую с логикой второй, может кто-нибудь мне помочь?

     FloatLayout:
        Button:
            id:1jab
            pos_hint: {"x":0.38,"y":0.843}
            size_hint: 0.02,0.03
            text: " "
            opacity : 1
            enabled : True
            on_release:
                print("You press plus button")
                app.convert_button_id_in_label_id("1jab")
                app.build_popup()
                self.text = ""
        Button:
            id:1jab-
            pos_hint: {"x":0.38,"y":0.843}
            size_hint: 0.02,0.03
            text: "-"
            opacity : 0
            enabled : False
            on_release:
                print("You press minus button")
                self.click_minus_button("1jab-")
  

Комментарии:

1. Как насчет того, чтобы не иметь двух кнопок, а только одну? Вы можете либо изменить кнопку, чтобы отобразить нужную метку, либо удалить и добавить кнопки, когда это необходимо.

2. Хорошо, как я могу переключаться между ними?

3. Одна вещь, о которой нужно знать: свойство для Button включения / выключения на самом деле disabled нет enabled .

Ответ №1:

Вместо двух кнопок вы можете иметь только одну кнопку и переключаться при необходимости:

 class TwoButtonLayout(FloatLayout):
    plus = BooleanProperty()
    button_plus = ObjectProperty()
    button_minus = ObjectProperty()

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        button_plus = ButtonPlus()
        button_minus = ButtonMinus()

    def on_plus(self, instance, plus):
        if plus:
            self.remove_widget(self.button_minus)
            self.add_widget(self.button_plus)
        else:
            self.remove_widget(self.button_plus)
            self.add_widget(self.button_minus)
  

ButtonPlus и ButtonMinus будут двумя классами вашей кнопки, так что вы можете стилизовать их с помощью kv. Вы, конечно, также можете просто использовать кнопку и изменять их значения в коде.