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