Поведение кнопки kivy не переключает изображения при использовании с `kv lang` - PullRequest
0 голосов
/ 22 февраля 2020

Цель :

  • Создать виджет изображения, который работает как кнопка.

Ожидаемый результат :

  • Кнопка Image должна соответственно переключать изображения.
  • Кнопка Изображение корректно переключает изображения при использовании с Python напрямую, но не с файлом .kv, что вызывает указанную ниже проблему.

Фактический результат :

  • Файл .kv показывает только изображение. Изображения не переключаются, даже когда отправляются события on_press и on_release.

main.py :

from kivy.uix.floatlayout import FloatLayout
from kivy.lang import Builder
from kivy.app import App

Builder.load_file('test1.kv')


class Test(FloatLayout):
    pass


class TestApp(App):
    def build(self):
        return Test()


if __name__ == '__main__':
    TestApp().run()

И main_menu.kv:

<ImageButton@ButtonBehavior+Image>

<Test>:
    FloatLayout:
        ImageButton:
            source: 'atlas://data/images/defaulttheme/checkbox_off'
            on_press:
                source: 'atlas://data/images/defaulttheme/checkbox_on'
            on_release:
                source: 'atlas://data/images/defaulttheme/checkbox_off'


Коды, приведенные выше, являются минимальным количеством кода для воспроизведения ошибки!


Большое спасибо за чтение.

1 Ответ

0 голосов
/ 22 февраля 2020

Посмотрите, работает ли приведенный ниже код.

<ImageButton@ButtonBehavior+Image>

<MainMenu>:
    FloatLayout:
        ImageButton:
            source: "C:\\Users\\kanna\\Pictures\\OpenCity-Main_Menu\\PNG\\Build-Icon.png"
            on_press:
                self.source = "C:\\Users\\kanna\\Pictures\\OpenCity-Main_Menu\\PNG\\Build-Icon_Click.png"
            on_release:
                self.source = "C:\\Users\\kanna\\Pictures\\OpenCity-Main_Menu\\PNG\\Build-Icon.png"

Основная проблема заключалась в том, что справа от on_ событий, таких как on_press, on_release, et c. синтаксис должен быть похож на Python, а не на kvLang.
Итак, ваш source: "c:/ bla-bla.." должен быть source = "c:/ bla-bla.." Код был обновлен .. снова

...