如何在 kivy 上切换 2 on_release?

How can I switch between 2 on_release on kivy?

我想知道如何为 1 kivy 按钮赋予两个功能,例如暂停和取消暂停按钮,当我点击暂停时,它会将值从 on_release 更改为另一个功能,并且当您再次单击时,它将返回到第一个,依此类推。

我试过这个:

======= Main.py =======

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout

class Main(BoxLayout):
    pass

class test(App):
    def build(self):
        return Main()

    def Pause(self):
        Main().ids.pause_unpause.on_release = self.Unpause
        print('Paused')

    def Unpause(self):
        Main().ids.pause_unpause.on_release = self.Pause
        print('Unpaused')


test().run()

======= test.kv =======

<Main>:
    Button:
        id: pause_unpause
        on_release: app.Pause()

但是他不会切换功能,谁能帮帮我?

您的代码有两个问题:

  1. 在您的方法中调用 Main() 会创建一个 Main 的新实例,它不是出现在您的 GUI 中的 Main。因此,在这些新实例上调用任何方法都不会影响您的 GUI。
  2. 在处理 on_release 事件期间更改 Button 的 on_release 绑定可能会导致意外结果。

我建议只使用单个 on_release 方法来跟踪 paused/unpaused 状态:

class test(App):
    is_paused = BooleanProperty(False)

    def build(self):
        return Main()

    def Pause_Unpause(self):
        self.is_paused = not self.is_paused
        if self.is_paused:
            print('Paused')
        else:
            print('Unpaused')

和对应的kv:

<Main>:
    Button:
        id: pause_unpause
        on_release: app.Pause_Unpause()