Python | Lienzo en Kivy usando un 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.

Tutorial de Kivy: aprenda Kivy con ejemplos .

Lienzo :

El lienzo es el objeto raíz utilizado para dibujar por un widget. Un lienzo kivy no es el lugar donde pintas. Cada Widget en Kivy ya tiene un Lienzo por defecto. Cuando crea un widget, puede crear todas las instrucciones necesarias para dibujar. Si self es su widget actual. Las instrucciones Color y Rectángulo se agregan automáticamente al objeto del lienzo y se usarán cuando se dibuje la ventana. Para usar Canvas debes tener que importar:

from kivy.graphics import Rectangle, Color
Basic Approach -
-> import kivy
-> import kivy App
-> import widget
-> import Canvas i.e.:
      from kivy.graphics import Rectangle, Color
-> set minimum version(optional)
-> Extend the Widget class
-> Create the App Class
-> create the .kv file:
    -> create the canvas
    -> Add action/callback if needed
-> return a Widget
-> Run an instance of the class

Implementación del enfoque: 1) Creación de un lienzo simple: archivo main.py 

Python3

# 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
 
# A Widget is the base building block
# of GUI interfaces in Kivy.
# It provides a Canvas that
# can be used to draw on screen.
from kivy.uix.widget import Widget
 
# From graphics module we are importing
# Rectangle and Color as they are
# basic building of canvas.
from kivy.graphics import Rectangle, Color
 
 
# class in which we are creating the canvas
class CanvasWidget(Widget):
    pass
 
# Create the App Class
class CanvasApp(App):
    def build(self):
        return CanvasWidget()
 
# run the App
CanvasApp().run()

Kivy busca un archivo Kv con el mismo nombre que su clase App en minúsculas, menos «App» si termina con ‘App’, por ejemplo: CanvasApp -> canvas.kv

archivo canvas.kv :

Python3

# .kv file of canvas
 
<CanvasWidget@Widget>
 
    # creating canvas
    canvas:
        Color:
            rgba: 0, 0, 1, 1    # Blue
 
        # size and position of Canvas
        Rectangle:
            pos: self.pos
            size: self.size

Producción:

 

Ahora, ¿cómo podemos cambiar el color del lienzo con cualquier acción? A continuación se muestra un ejemplo en el que al hacer clic cambia el color de la pantalla.

Archivo principal.py: 

Python3

# 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
 
# From graphics module we are importing
# Rectangle and Color as they are
# basic building of canvas.
from kivy.graphics import Rectangle, Color
 
# The ButtonBehavior mixin class provides Button behavior.
from kivy.uix.button import ButtonBehavior
 
# The Label widget is for rendering text.
from kivy.uix.label import Label
 
# class in which we are creating the canvas
class CanvasWidget(ButtonBehavior, Label):
    pass
 
# Create the App Class
class CanvasApp(App):
    def build(self):
        return CanvasWidget()
 
# run the App
CanvasApp().run()

Archivo .kv: 

Python3

# .kv file of canvas
 
<CanvasWidget>
 
    # Creating Canvas
    canvas:
 
        # Color is blue if button is pressed,
        # otherwise color is red
        Color:
            rgb: (1, 0, 0, 1) if self.state == 'normal' else (0, 0, 1, 1)
     
        # Rounded rectangle canvas
        RoundedRectangle:
            size: self.size
            pos: self.pos
             
            # Play with these if you want smooth corners for your button
            radius: 100, 100, 100, 100
         
 
    # Print the text when touched or button pressed   
    on_release:
        print("I have been clicked")

Producción:  

Nota: las instrucciones de dibujo de Kivy no se relacionan automáticamente con la posición o el tamaño del widget. Por lo tanto, debe tener en cuenta estos factores al dibujar. Para que sus instrucciones de dibujo sean relativas al widget, las instrucciones deben declararse en KvLang o vincularse a los cambios de posición y tamaño.

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 *