2017-04-03 73 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