Desarrollo de aplicaciones móviles con Python | Hacia la ciencia de los datos

Desarrollo de aplicaciones móviles es el proceso de construir una aplicación para dispositivos móviles, como teléfonos inteligentes y tabletas. En general, las aplicaciones móviles son más difíciles de desarrollar que las aplicaciones web, ya que deben diseñarse desde cero para cada plataforma, mientras que el desarrollo web comparte códigos comunes en diferentes dispositivos.

Cada sistema operativo tiene su propio lenguaje utilizado para codificar un aplicación nativa (uno creado con tecnología dedicada a una plataforma específica). Por ejemplo, Android usa Java, mientras que iOS usa Swift. Por lo general, es mejor usar la tecnología dedicada para aplicaciones que requieren un alto rendimiento, como juegos o animaciones pesadas. De lo contrario, aplicaciones híbridas Use lenguajes multiplataforma (es decir, Python) que se pueden ejecutar en múltiples sistemas operativos.

El desarrollo de aplicaciones móviles es muy relevante para la IA, ya que permite la integración de nuevas tecnologías en la vida diaria de las personas. Los LLM son muy populares ahora porque se han implementado en aplicaciones fáciles de usar en su teléfono, de fácil acceso en cualquier momento y en cualquier lugar.

A través de este tutorial, explicaré Cómo crear una aplicación móvil multiplataforma con Python, Usando mi aplicación Memorizer como ejemplo (enlace al código completo al final del artículo).

Configuración

Voy a usar el Marco de Kivyque es el más utilizado para el desarrollo móvil en la comunidad de Python. Kivy es un paquete de código abierto para aplicaciones móviles, mientras que Kivymd es la biblioteca que aprovecha la de Google Diseño de material y hace que el uso de este marco sea mucho más fácil (similar a Bootstrap para el desarrollo web).

## for development
pip install kivy==2.0.0
pip install kivymd==0.104.2

## for deployment
pip install Cython==0.29.27
pip install kivy-ios==1.2.1

Lo primero que debe hacer es crear 2 archivos:

  • Main.py (El nombre debe ser este) que contendrá el código Python de la aplicación, básicamente el back-end
  • componentes.kv (puede llamarlo de manera diferente) que contendrá todo el Kivy Código utilizado para el diseño de la aplicación, puede verlo como el front-end

Entonces, en el Main.py Archivo importamos el paquete para inicializar un aplicación vacía:

from kivymd.app import MDApp

class App(MDApp):
   def build(self):        
       self.theme_cls.theme_style = "Light"        
       return 0

if __name__ == "__main__":    
   App().run()

Antes de comenzar, describiré brevemente la aplicación que estoy construyendo. Es una aplicación simple que ayuda a memorizar cosas: el usuario inserta un par de palabras (es decir, algo en inglés y el equivalente en otro idioma, o una fecha y el evento histórico vinculado a eso). Luego, el usuario puede jugar el juego tratando de recordar información barajada. De hecho, lo estoy usando para memorizar el vocabulario chino.

Como puede ver en la imagen, voy a incluir:

  • una pantalla de introducción para mostrar el logotipo
  • una pantalla de inicio que puede redirigir a las otras pantallas
  • una pantalla para guardar palabras
  • una pantalla para ver y eliminar información almacenada
  • una pantalla para jugar el juego.

Entonces, podemos escribirlos todos en el componentes.kv archivo:

Para incluir Kivy archivo en la aplicación, necesitamos cargarlo desde el Main.py con el clase de constructormientras el clase de pantalla Enlaza las pantallas entre los dos archivos.

from kivymd.app import MDApp
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen

class App(MDApp):
   def build(self):        
       self.theme_cls.theme_style = "Light"        
       return Builder.load_file("components.kv")

class IntroScreen(Screen):    
   pass 

class HomeScreen(Screen):    
   pass 

class PlayScreen(Screen):
   pass  
 
class SaveScreen(Screen):    
   pass 

class EditScreen(Screen):
   pass

if __name__ == "__main__":    
   App().run()

Tenga en cuenta que incluso si la aplicación en sí es básica, hay una característica bastante difícil: Gestión de DB a través de Mobile. Es por eso que vamos a usar también el paquete nativo de Python para bases de datos:

import sqlite3

Desarrollo – Conceptos básicos

Vamos a calentar con el Pantalla de introducción: simplemente contiene un logotipo de imagenalguno Etiquetas de textoy un botón para moverse a otra pantalla.

Considero eso fácil porque no requiere ningún código de pitón, puede ser manejado por el componentes.kv archivo. El cambio de pantalla activado por el botón debe vincularse a la raíz de esta manera:

Lo mismo ocurre con el Pantalla de inicio: Dado que es solo una redirección, todo se puede manejar con Kivy código. Solo tiene que especificar que la pantalla debe tener 1 icono y 3 botones.

Es posible que hayas notado que en la parte superior de la pantalla hay un icono de “inicio”. Tenga en cuenta que hay una diferencia entre un icono simple y un botón de icono: Este último es presionable. En esta pantalla es solo un icono simple, pero en las otras pantallas será un botón de icono utilizado para traerlo de regreso a la pantalla de inicio desde cualquier otra pantalla de la aplicación.

Cuando usamos un icono, tenemos que proporcionar la etiqueta (es decir, “Inicio” muestra una pequeña casa). Encuentro este código Muy útil, simplemente ejecutarlo y mostrará todos los iconos disponibles.

Desarrollo – Avanzado

Permitamos nuestro juego y tratemos con el DB a través del Guardar pantalla. Debe permitir al usuario guardar diferentes palabras para diferentes categorías (es decir, estudiar múltiples idiomas). Eso implica:

  • Elegir una categoría existente (es decir, chino), por lo que consulta los existentes
  • Creando una nueva categoría (es decir, francés)
  • dos entradas de texto (es decir, una palabra y su traducción)
  • Un botón para guardar el formulario, por lo que escribir una nueva fila en el DB.

Cuando ejecuta la aplicación por primera vez, se debe crear el DB. Podemos hacerlo en la función principal de la aplicación. Por conveniencia, voy a agregar también otra función que consulte el DB con cualquier SQL que transfiera.

class App(MDApp):

   def query_db(self, q, data=False):        
       conn = sqlite3.connect("db.db")        
       db = conn.cursor()        
       db.execute(q)        
       if data is True:            
           lst_tuples_rows = db.fetchall()        
       conn.commit()        
       conn.close()        
       return lst_tuples_rows if data is True else None

   def build(self):        
       self.theme_cls.theme_style = "Light"
       q = "CREATE TABLE if not exists SAVED (category text, left
            text, right text, unique (category,left,right))"      
       self.query_db(q)
       return Builder.load_file("components.kv")

La parte difícil es el ícono de DB que, cuando se presiona, muestra todas las categorías existentes y permite la selección de una. En el componentes.kv Archivo, en la pantalla Guardar (llamada “ahorrar”), Agregamos un botón de icono (llamado “categoría_dropdown_save“) Que, si se presiona, lanza el Python desplegable_save () función desde la aplicación principal.

Esa función se define en el Main.py archivo y devuelve un menú desplegable tal que, cuando se presiona un elemento, se asigna a una variable llamada “categoría“.

Esa última línea de código vincula el categoría variable con la etiqueta que aparece en el front-end. El administrador de la pantalla llama a la pantalla con get_screen () e identifica el artículo por identificación:

Cuando el usuario ingresa a la pantalla Guardar, el categoría La variable debe ser nulo hasta que se seleccione uno. Podemos especificar el Propiedades de la pantalla Cuando uno entra y cuando uno se va. Así que voy a agregar una función en la clase de pantalla que vacía la variable de la aplicación.

class SaveScreen(Screen):    
   def on_enter(self):        
       App.category = ''

Una vez que se elige la categoría, el usuario puede insertar las otras entradas de texto, que son necesarias para guardar el formulario (presionando el botón).

Para asegurarse de que la función no guarde si una de las entradas está vacía, usaré un caja de diálogo.

from kivymd.uix.dialog import MDDialog

class App(MDApp):    
  dialog = None     
  
  def alert_dialog(self, txt):        
     if not self.dialog:            
        self.dialog = MDDialog(text=txt)        
     self.dialog.open()        
     self.dialog = None

  def save(self):
     self.category = self.root.get_screen('save').ids.category.text  
          if self.category == '' else self.category            
     left = self.root.get_screen('save').ids.left_input.text            
     right = self.root.get_screen('save').ids.right_input.text            
     if "" in [self.category.strip(), left.strip(), right.strip()]:                
          self.alert_dialog("Fields are required")            
     else:                
          q = f"INSERT INTO SAVED VALUES('{self.category}',
                '{left}','{right}')"                
          self.query_db(q)                
          self.alert_dialog("Saved")                  
          self.root.get_screen('save').ids.left_input.text = ''                
          self.root.get_screen('save').ids.right_input.text = ''                
          self.category = ''

Después de leer hasta ahora, estoy seguro de que puede pasar por el código completo y comprender lo que está sucediendo. La lógica de las otras pantallas es bastante similar.

Prueba

Puedes probar la aplicación en el Simulador de iOS en MacBookque replica un entorno de iPhone sin necesidad de un dispositivo físico iOS.

Xcode necesita ser instalado. Comience abriendo el terminal y ejecutando los siguientes comandos (el último tomará unos 30 minutos):

brew install autoconf automake libtool pkg-config

brew link libtool

toolchain build kivy

Ahora decida el nombre de su aplicación y úselo para crear el repositorio, luego abra el.xcodeproj archivo:

toolchain create yourappname ~/some/path/directory

open yourappname-ios/yourappname.xcodeproj

Finalmente, si está trabajando con iOS y desea probar una aplicación en su teléfono y luego publicarla en la App Store, Apple requiere que pague por un cuenta de desarrollador.

Conclusión

Este artículo ha sido un tutorial para demostrar Cómo diseñar y construir una aplicación móvil multiplataforma con Python. Yo usé Kivy Para diseñar la interfaz de usuario y mostré cómo ponerla a disposición de los dispositivos iOS. Ahora puede hacer sus propias aplicaciones móviles con Python y Kivy.

Código completo para este artículo: Github

¡Espero que lo hayas disfrutado! No dude en ponerse en contacto conmigo para obtener preguntas y comentarios o simplemente para compartir sus interesantes proyectos.

👉 Vamos a conectarnos 👈

(Todas las imágenes, a menos que se indique lo contrario, son por el autor)