Как использовать оператор if в файле .kv - PullRequest
0 голосов
/ 29 марта 2019

Я хочу загрузить определенное изображение, в этом случае я хочу, чтобы моя игра отображала изображение железного человека, но только когда переменная 'char' установлена ​​на железного человека, который игрок установит, если они захотят игратькак он.

<Game2>:
    name: "Avengers Tower"
    FloatLayout:
        Image:
            source: "avengerstower.png"

Этот код изображения ниже - это то, что я хочу запустить, когда char - железный человек

        Image:
            source: "ironmanhover.png" 
            pos_hint: {"x": .6, "y": .05}
            size_hint: .4, .7

        Label:
            text: "You are in the Avengers Tower!"
            pos_hint: {"x": .45, "y": .6}
            font_size: "20dp"
            color: (0,0,0,1)
            size_hint: None, None

        Button:
            text: "North"
            pos_hint: {"x": .45, "y": .85}
            size_hint: None, None
            height: 50
            on_press:
                root.manager.current = "AvengersCourtyard"

Этот код ниже, где установлено значение char.

<Game>:
    name: "main"
    FloatLayout:
        Image:
            source: "choosecharacter.png"

        Image:
            source: "choosechar.png" 
            pos_hint: {"x": .3, "y": .25}
            size_hint: .4, .8

        Button:
            text: "<- Back"
            font_size: "15dp"
            pos: 40, 510
            size_hint: None, None
            height: 50
            on_press:
                root.manager.current = "Title"

        ToggleButton:
            text: "Iron Man"
            font_size: "15dp"
            pos: 200, 150
            size_hint: None, None
            height: 80
            group: "character"
            on_press:
                char = "Iron Man"

        ToggleButton:
            text: "Thor"
            font_size: "15dp"
            pos: 350, 150
            size_hint: None, None
            height: 80
            group: "character"
            on_press:
                char = "Thor"

        ToggleButton:
            text: "Scarlett Witch"
            font_size: "15dp"
            pos: 500, 150
            size_hint: None, None
            height: 80
            group: "character"
            on_press:
                char = "Scarlett Witch"

        Button:
            text: "Play!"
            height: 50
            font_size: "15dp"
            pos: 650, 60
            size_hint: None, None
            on_press:
                root.manager.current = "Avengers Tower"

Это кнопки выше, которые переключают ^^

1 Ответ

0 голосов
/ 29 марта 2019

ToggleButton не имеет события on_press.Он имеет событие on_state.

Kivy »ToggleButton

Виджет ToggleButton действует как флажок.При касании или щелчке по нему состояние переключается между «нормальным» и «вниз» (в отличие от кнопки, которая остается «нажатой» только до тех пор, пока она нажата).

Кнопки переключения также можно группироватьчтобы сделать радио кнопки - только одна кнопка в группе может быть в состоянии «вниз».

Фрагменты

    ToggleButton:
        text: "Iron Man"
        font_size: "15dp"
        pos: 200, 150
        size_hint: None, None
        height: 80
        group: "character"
        #on_press:
        on_state:
            if self.state == "down": \
            print(self.text); \
            root.manager.current = "Avengers Tower"

    ToggleButton:
        text: "Thor"
        font_size: "15dp"
        pos: 350, 150
        size_hint: None, None
        height: 80
        group: "character"
        #on_press:
        on_state:
            if self.state == "down": \
            print(self.text); \
            root.manager.current = "Thor"

    ToggleButton:
        text: "Scarlett Witch"
        font_size: "15dp"
        pos: 500, 150
        size_hint: None, None
        height: 80
        group: "character"
        #on_press:
        on_state:
            if self.state == "down": \
            print(self.text); \
            root.manager.current = "Scarlett Witch"
...