与`kv lang`一起使用时,按钮不切换图像

问题描述 投票:0回答:1

目标

  • 使按钮成为图像小部件。

预期结果

  • 图像按钮必须相应地切换图像。
  • [直接使用Python而不使用.kv文件时,图像按钮可以正确切换图像,这会导致以下问题。

实际结果

  • .kv文件仅显示图像。即使调度了on_presson_release事件,图像也不会切换。

The 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'


上面给出的代码是重现该错误的最少量代码!


非常感谢您阅读。

python python-3.x kivy kivy-language
1个回答
1
投票

查看下面的代码是否有效。

<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_presson_release等。语法必须像Python,而不是kvLang。因此,您的source: "c:/ bla-bla.."必须为source = "c:/ bla-bla.."


代码已更新。.再次
© www.soinside.com 2019 - 2024. All rights reserved.