📜  如何在 android 上为 kivy 应用禁用后退按钮?

📅  最后修改于: 2022-05-13 01:55:23.901000             🧑  作者: Mango

如何在 android 上为 kivy 应用禁用后退按钮?

在本文中,我们将使用Python 的kivy 框架开发一个 GUI 窗口,我们将禁用窗口中的 android 后退按钮。

方法

  • 当 kivy 应用程序启动时, on_start()方法将自动调用,该方法将从kivy导入 EventLoop。
  • 使用这个 EventLoop 我们将一个方法hook_keyboard()绑定到当前窗口以检测按键按下意味着每当我们按下任何键时,这个 hook_keyboard() 方法将自动调用,它检查我们是否按下了后退按钮(这个后退按钮的代码是 27)。
  • 然后我们检查我们是否在主屏幕上,如果是,那么我们简单地返回 True(并且这个应用程序将被终止)否则我们不会返回任何东西并且这个程序不会在按键上做任何事情。

执行

Python3
# importing kivy App
from kivy.app import App
  
# importing BoxLayout from kivy
from kivy.uix.boxlayout import BoxLayout
  
# importing ScreenManager and Screen from kivy
from kivy.uix.screenmanager import ScreenManager, Screen
  
  
class MainWindow(BoxLayout):
    pass
  
  
class uiApp(App):
    def on_start(self):
        from kivy.base import EventLoop
          
        # attaching keyboard hook when app starts
        EventLoop.window.bind(on_keyboard=self.hook_keyboard)
  
    def hook_keyboard(self, window, key, *largs):
          
        # key == 27 means it is waiting for 
        # back button tobe pressed
        if key == 27:
              
            # checking if we are at mainscreen or not
            if self.screen_manager.current == 'mainscreen':
                  
                # return True means do nothing
                return True
            else:
                  
                # return anything except True result in 
                # closing of the app on button click
                # if are not at mainscreen and if we press 
                # back button the app will get terminated
                pass
  
    def build(self):
        self.screen_manager = ScreenManager()
  
        # adding Designed screen to ScreenManager
        self.mainscreen = MainWindow()
        screen = Screen(name='mainscreen')
        screen.add_widget(self.mainscreen)
        self.screen_manager.add_widget(screen)
  
        # returning screen manager
        return self.screen_manager
  
  
if __name__ == "__main__":
      
    # running the object of app
    uiApp().run()


输出:

这是可见屏幕的主要设计:



:
    BoxLayout:
    BoxLayout:
        canvas.before:
            Color:
                rgba:[0,1,0,1]
            Rectangle:
                pos:self.pos
                size:self.size
    BoxLayout:

注意:这个应用程序在 pc 上运行时不会做任何事情,它只是在 pc 上显示一个屏幕,而这个应用程序的输出可以在 android 设备上完美地检查。