我的应用程序中有一堆屏幕,我希望后退按钮能够普遍用于返回上一个屏幕。我一直在尝试实现一个堆栈并弹出上一个屏幕,但由于某种原因,我找到的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中更容易实现......
答案 0 :(得分:0)
我不认为覆盖 init 导致此问题,并且当然所有后退按下都会调用onBackBtn函数,因为它指的是27键实际上意味着后退按钮。检查这个出https://pastebin.com/3CTv6GQV