¿Cómo deshabilitar el botón Atrás en Android para la aplicación kivy?

En este artículo, desarrollaremos una ventana GUI usando el marco kivy de python, y deshabilitaremos el botón de retroceso de Android desde la ventana.

Acercarse

  • Cuando la aplicación kivy se inicia, el método on_start() llamará automáticamente y este método importará EventLoop desde kivy.
  • Usando este EventLoop, vincularemos un método hook_keyboard() a la ventana actual para detectar pulsaciones de teclas, lo que significa que cada vez que presionemos cualquier tecla, este método hook_keyboard() llamará automáticamente y verificará si hemos presionado el botón Atrás (código para este botón Atrás es 27).
  • Luego, verificamos si estamos en la pantalla principal o no, si es así, simplemente devolvemos True (y esta aplicación se cerrará), de lo contrario, no devolveremos nada y este programa no hará nada al presionar una tecla.

Implementación

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()

Producción:

Este es el diseño principal de la pantalla visible:

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

Nota : esta aplicación no haría nada al ejecutarse en la PC, simplemente muestra una pantalla en la PC, mientras que la salida de esta aplicación se puede verificar perfectamente en un dispositivo Android.

Publicación traducida automáticamente

Artículo escrito por yashmathur123123 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *