Python | Trabajando con botones en Kivy con archivo .kv

Kivy es una herramienta GUI independiente de la plataforma en Python. Como se puede ejecutar en Android, IOS, Linux y Windows, etc. Básicamente se usa para desarrollar la aplicación de Android, pero eso no significa que no se pueda usar en aplicaciones de escritorio.

Botón:

El botón es una etiqueta con acciones asociadas que se activan cuando se presiona el botón (o se suelta después de un clic/toque). Podemos agregar funciones detrás del botón y diseñar el botón.

En este artículo, vamos a discutir cómo podemos crear los botones usando .kv el archivo. También hacemos un poco de diseño de botones y también definimos cómo vincular un botón a una devolución de llamada.

Para usar el botón, debe importar:

import kivy.uix.button as Button
Basic Approach:

1) import kivy
2) import kivyApp
3) import Widget
4) import Button
5) Set minimum version(optional)
6) Create widget class:
          1) Arrange a callback
          2) Define Callback function
7) create App class
8) create .kv file (name same as the app class):
        1) create Widget
        2) Create Button
        3) Specify requirements
9) return Layout/widget/Class(according to requirement)
10) Run an instance of the class

Uno de los problemas comunes es cómo agregar funcionalidad al botón. Entonces, para agregar funcionalidad, usamos bind()la función, vincula la función al botón. bind()crea un evento que se envía a callback().

Uno de los problemas más comunes para los nuevos usuarios de Kivy es entender mal cómo funciona el método de vinculación, especialmente entre los nuevos usuarios de Python que no han formado completamente su intuición sobre las llamadas a funciones.
La cuestión es que el método bind no conoce la existencia de una función o sus argumentos, solo recibe el resultado de esta llamada a la función. Como en el código dado, cuando se presiona el botón, imprime esa definición de «botón presionado» en la función de devolución de llamada.

Código para implementar el enfoque anterior con acción de botón y estilo.

# import kivy module 
import kivy 
    
# this restrict the kivy version i.e 
# below this kivy version you cannot 
# use the app or software 
kivy.require("1.9.1") 
    
# base Class of your App inherits from the App class. 
# app:always refers to the instance of your application 
from kivy.app import App 
    
# creates the button in kivy 
# if not imported shows the error 
from kivy.uix.button import Button
  
# Widgets are elements of a graphical user 
# interface that form part of the User Experience. 
from kivy.uix.widget import Widget
  
  
# Creating a widget class 
# through this we add button 
# the commands of the class is in .kv file 
class Button_Widget(Widget):
  
    def __init__(self, **kwargs):
  
        # Python super() function allows us to
        # refer to the parent class explicitly.
          
        super(Button_Widget, self).__init__(**kwargs)
  
        # creating Button    
        btn1 = Button(text ='Hello World 1', font_size ="15sp",
                   background_color =(1, 1, 1, 1), 
                   color =(1, 1, 1, 1), 
                   # size =(32, 32), 
                   # size_hint =(.2, .2), 
                   pos =(300, 250)) 
  
        # Arranging a callback to a button using
        # bind() function in kivy.
        btn1.bind(on_press = self.callback)
        self.add_widget(btn1)
  
    # callback function tells when button pressed
    # It tells the state and instance of button.
    def callback(self, instance):
        print("Button is pressed")
        print('The button % s state is <%s>' % (instance, instance.state))
  
# create App class 
class ButtonApp(App):
  
    def build(self):
        # return the widget 
        return Button_Widget()
  
# run the App
if __name__ == "__main__":
    ButtonApp().run()

Implementación del archivo .kv del Enfoque

# .kv file of the main.py code 
# Adding Button widget
  
<Button_Widget>:
  
    # defining Button size
    size: 100, 100
  
    # creating Canvas 
    canvas.before:
        Color:
            rgba: 0.72, 0.62, 0.92, 1
        Rectangle:
            pos: self.pos
            size: self.size

Producción:

Mostrando la imagen de acción del botón: es decir, al hacer clic en el botón obtendrá este resultado

Publicación traducida automáticamente

Artículo escrito por YashKhandelwal8 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 *