后退按钮功能Kivy与屏幕缓存

时间:2017-04-03 22:34:28

标签: android kivy

我的应用程序中有一堆屏幕,我希望后退按钮能够普遍用于返回上一个屏幕。我一直在尝试实现一个堆栈并弹出上一个屏幕,但由于某种原因,我找到的Window绑定方法解决方案不能完全正常工作。

class RegisterScreen(Screen):
    screenlist = ListProperty([])
    def __init__(self, **kwargs):
        super(RegisterScreen, self).__init__(**kwargs)
        # Setting it up to listen for keyboard events
        Window.bind(on_keyboard=self.onBackBtn)
    def onBackBtn(self, window, key, *args):
       """ To be called whenever user presses Back/Esc Key """
        # If user presses Back/Esc Key
        if key == 27:
            print(self.screenlist)
            self.manager.current = self.screenlist[len(screenlist)]
            return True

此代码的问题是__init__覆盖方法。我认为将on_keyboard函数绑定到Window会使所有后退按钮按下使用onBackBtn方法。我该如何解决这个问题?

TLDR:如何让后退按钮返回到之前的屏幕堆栈?

我主要使用KV语言,但我认为后退按钮实现在Python中更容易实现......

1 个答案:

答案 0 :(得分:0)

我不认为覆盖 init 导致此问题,并且当然所有后退按下都会调用onBackBtn函数,因为它指的是27键实际上意味着后退按钮。检查这个出https://pastebin.com/3CTv6GQV