2017-04-03 77 views
0

我在我的应用程序中有一堆屏幕,我希望后退按钮能够通用地返回到前一个屏幕。我一直在尝试实现一个堆栈并弹出前一个屏幕,但由于某种原因,我找到的Window绑定方法解决方案无法完全工作。后退按钮功能Kivy与屏幕高速缓存

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

说明:我意识到所有后退按钮使用onBackBtn方法,但我不知道如何使它回到以前的屏幕 – Nithishbn

回答

0

我不认为overiding的初始化导致此问题,并ofcourse全部回压将调用onBackBtn函数,因为它指的是27键,它实际上意味着后退按钮。检查出来https://pastebin.com/3CTv6GQV

+0

但是,我应该在屏幕小部件或应用程序内部具有onBackBtn函数窗口小部件? – Nithishbn

+0

你的代码似乎不能完全工作? – Nithishbn