dibujo
index
/home/manager/prog-python/test_fundamentos/fundamentos/dibujo.py

                       Paquete fundamentos
  Conjunto de módulos para hacer entrada/salida sencilla en Python
 
                       Copyright (C) 2019
                 Universidad de Cantabria, SPAIN
                         Versión 1.1
                         Marzo 2019
 
 @author: Michael Gonzalez   <mgh@unican.es>
 
 Licencia: GPL
 This program is free software; you can redistribute it and/or
 modify it under the terms of the GNU General Public
 License as published by the Free Software Foundation; either
 version 3 of the License, or (at your option) any later version.
 
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 General Public License for more details.
 
-----------------------------------------------------------------------
dibujo.py: Módulo con clases que permiten hacer dibujos sencillos
           en una ventana
-----------------------------------------------------------------------
 
-----------------------
Sistema de coordenadas:
-----------------------
 
Las coordenadas se miden en píxeles, siendo el origen de coordenadas la
esquina superior izquierda de la ventana, el sentido positivo horizontal
hacia la derecha y el sentido positivo vertical hacia abajo
 
 0,0
  |----------> X
  |
  |
  |
  Y
 
--------------------------------------
Ejemplo de uso para dibujos estáticos:
--------------------------------------
 
from fundamentos.dibujo import Dibujo
from fundamentos.dibujo import Ovalo
from fundamentos.dibujo import Poligono
 
def main():
 
    # Creamos el dibujo
    dib = Dibujo("Prueba de dibujo", 640, 480)
 
    # Creamos un par de figuras en el dibujo dib
    ball = Ovalo(dib, 0, 0, 25, 25, "red")
    triangulo = Poligono(dib, [150, 300, 200, 320, 240, 380], "blue")
 
    # Pintamos el dibujo y esperamos a que se cierre la ventana
    dib.espera()
 
    # Destruimos el dibujo
    dib.destruye()
 
 
    # Si queremos hacer algo más con el dibujo hay que comprobar que
    # no se haya matado la ventana. Para ello cambiamos la llamada a espera():
    #
    # terminar: bool = dib.espera()
    # if not terminar:
    #     ...
 
-----------------------------
Ejemplo de un dibujo animado:
-----------------------------
 
from fundamentos.dibujo import Dibujo
from fundamentos.dibujo import Ovalo
from fundamentos.dibujo import Poligono
 
def main():
 
    # Creamos el dibujo
    dib = Dibujo("Prueba de dibujo", 640, 480)
 
    # Creamos un par de figuras en el dibujo dib
    ball = Ovalo(dib, 0, 0, 25, 25, "red")
    triangulo = Poligono(dib, [150, 300, 200, 320, 240, 380], "blue")
 
    finalizar: bool = False
    while not finalizar:
        # Determinar cuánto hay que moverse
        delta_x = ...
        delta_y = ...
 
        # Mover las figuras
        ball.mueve(delta_x, delta_y)
        triangulo.mueve(delta_x, delta_y)
 
        # Redibujar y mirar a ver si se ha matado la ventana
        finalizar = dib.pinta()
    # destruir el dibujo al finalizar del bucle
    dib.destruye()
 
-----------------
-- Nota de uso --
-----------------
Cuando un programa que usa este módulo tiene un fallo y la ventana no se
destruye correctamente, el terminal de IPython del entorno Spyder redibuja
la ventana anterior cuando se vuelve a ejecutar el programa, apareciendo
ventanas duplicadas. Para recuperarse de esta situación basta reiniciar
el terminal (botón derecho en el terminal, y "Salir")
 
@author: Michael.
@date:   Feb 2019

 
Modules
       
time

 
Classes
       
builtins.object
Dibujo
Figura
Imagen
Linea
Ovalo
Poligono
Rectangulo
Texto

 
class Dibujo(builtins.object)
    Dibujo(titulo: str, width: int = 500, height: int = 400)
 
Esta clase representa una ventana con un lienzo de dibujo
 
El lienzo de dibujo se usará al crear figuras tales como rectángulos,
polígonos, etc., usando el resto de las clases de este módulo
 
  Methods defined here:
__init__(self, titulo: str, width: int = 500, height: int = 400)
Crea la ventana
 
Args:
    titulo: El título de la ventana
    width: Anchura de la ventana en píxeles. Valor por defecto, 500
    height: Altura de la ventana en píxeles. Valor por defecto, 400
destruye(self)
Destruir la ventana
espera(self) -> bool
Pinta el dibujo y espera hasta que se pulsa OK o se mata la ventana
 
Returns:
    True si se ha matado la ventana, False si se ha pulsado OK
get_canvas(self)
Obtener el lienzo interno de dibujo
pinta(self) -> bool
Pinta el dibujo y espera un poco
 
Returns:
    Booleano que indica si se debe destruir la ventana o no

Data descriptors defined here:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class Figura(builtins.object)
    Figura(dib)
 
Clase abstracta que define una figura genérica. No usar directamente
 
  Methods defined here:
__init__(self, dib)
Crea la figura
borra(self)
Borra la figura del dibujo
coloca(self, c_x: int, c_y: int)
Coloca la figura en las coordenadas indicadas
 
Args:
    c_x: Coordenada x donde se coloca el centro de la figura
    c_y: Coordenada y donde se coloca el centro de la figura
get_canvas(self)
Obtener el lienzo interno de dibujo
mueve(self, delta_x: int, delta_y: int)
Mueve la figura en sentido horizontal y vertical
 
Args:
    delta_x: Píxeles a mover en sentido horizontal
    delta_y: Píxeles a mover en sentido vertical

Data descriptors defined here:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class Imagen(Figura)
    Imagen(dib: dibujo.Dibujo, pos_x: int, pos_y: int, nombre_fichero: str)
 
Define una imagen obtenida a partir de un archivo .gif, o .png
(no .jpg) para dibujar en un objeto de la clase Dibujo
 
 
Method resolution order:
Imagen
Figura
builtins.object

Methods defined here:
__init__(self, dib: dibujo.Dibujo, pos_x: int, pos_y: int, nombre_fichero: str)
Crea la imagen en la posición indicada
 
Args:
    dib: El objeto de la clase Dibujo que representa la ventana
    pos_x: Coordenada x del centro de la imagen
    pos_y: Coordenada y del centro de la imagen
    nombre_fichero: El nombre del fichero, incluyendo la extensión

Methods inherited from Figura:
borra(self)
Borra la figura del dibujo
coloca(self, c_x: int, c_y: int)
Coloca la figura en las coordenadas indicadas
 
Args:
    c_x: Coordenada x donde se coloca el centro de la figura
    c_y: Coordenada y donde se coloca el centro de la figura
get_canvas(self)
Obtener el lienzo interno de dibujo
mueve(self, delta_x: int, delta_y: int)
Mueve la figura en sentido horizontal y vertical
 
Args:
    delta_x: Píxeles a mover en sentido horizontal
    delta_y: Píxeles a mover en sentido vertical

Data descriptors inherited from Figura:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class Linea(Figura)
    Linea(dib: dibujo.Dibujo, x1: int, y1: int, x2: int, y2: int, color: str)
 
Define una línea para dibujar en un objeto de la clase Dibujo
 
 
Method resolution order:
Linea
Figura
builtins.object

Methods defined here:
__init__(self, dib: dibujo.Dibujo, x1: int, y1: int, x2: int, y2: int, color: str)
Crea la línea entre (x1, y1) y (x2, y2)
 
Args:
    dib: El objeto de la clase Dibujo que representa la ventana
    x1: Coordenada x del punto 1
    y1: Coordenada y del punto 1
    x2: Coordenada x del punto 2
    y1: Coordenada y del punto 2
    color: El color de la línea. Ejemplo "red", "dark green"

Methods inherited from Figura:
borra(self)
Borra la figura del dibujo
coloca(self, c_x: int, c_y: int)
Coloca la figura en las coordenadas indicadas
 
Args:
    c_x: Coordenada x donde se coloca el centro de la figura
    c_y: Coordenada y donde se coloca el centro de la figura
get_canvas(self)
Obtener el lienzo interno de dibujo
mueve(self, delta_x: int, delta_y: int)
Mueve la figura en sentido horizontal y vertical
 
Args:
    delta_x: Píxeles a mover en sentido horizontal
    delta_y: Píxeles a mover en sentido vertical

Data descriptors inherited from Figura:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class Ovalo(Figura)
    Ovalo(dib: dibujo.Dibujo, xmin: int, ymin: int, xmax: int, ymax: int, color: str)
 
Define un ovalo para dibujar en un objeto de la clase Dibujo
 
 
Method resolution order:
Ovalo
Figura
builtins.object

Methods defined here:
__init__(self, dib: dibujo.Dibujo, xmin: int, ymin: int, xmax: int, ymax: int, color: str)
Crea el ovalo inscrito en el rectángulo de esquinas en
(xmin, ymin) y (xmax, ymax)
 
Args:
    dib: El objeto de la clase Dibujo que representa la ventana
    xmin: Coordenada x de la esquina superior izquierda del rectángulo
    ymin: Coordenada y de la esquina superior izquierda del rectángulo
    xmax: Coordenada x de la esquina inferior derecha del rectángulo
    ymax: Coordenada y de la esquina inferior derecha del rectángulo
    color: El color de la línea. Ejemplo "red", "dark green"

Methods inherited from Figura:
borra(self)
Borra la figura del dibujo
coloca(self, c_x: int, c_y: int)
Coloca la figura en las coordenadas indicadas
 
Args:
    c_x: Coordenada x donde se coloca el centro de la figura
    c_y: Coordenada y donde se coloca el centro de la figura
get_canvas(self)
Obtener el lienzo interno de dibujo
mueve(self, delta_x: int, delta_y: int)
Mueve la figura en sentido horizontal y vertical
 
Args:
    delta_x: Píxeles a mover en sentido horizontal
    delta_y: Píxeles a mover en sentido vertical

Data descriptors inherited from Figura:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class Poligono(Figura)
    Poligono(dib: dibujo.Dibujo, puntos: List[int], color: str = 'black', abierto: bool = False)
 
Define un polígono para dibujar en un objeto de la clase Dibujo
 
 
Method resolution order:
Poligono
Figura
builtins.object

Methods defined here:
__init__(self, dib: dibujo.Dibujo, puntos: List[int], color: str = 'black', abierto: bool = False)
Crea el poligono abierto o cerrado. Las coordenadas del polígono
se definen en una lista que alterna las coordenadas x,y, de la forma
[x1, y1, x2, y2, x3, y3, ...]
 
Args:
    dib: El objeto de la clase Dibujo que representa la ventana
    puntos: una lista de puntos con las coordenadas del polígono
    color: El color del polígono. Ejemplo "red", "dark green"
    abierto: Determina si el polígono es abierto o cerrado

Methods inherited from Figura:
borra(self)
Borra la figura del dibujo
coloca(self, c_x: int, c_y: int)
Coloca la figura en las coordenadas indicadas
 
Args:
    c_x: Coordenada x donde se coloca el centro de la figura
    c_y: Coordenada y donde se coloca el centro de la figura
get_canvas(self)
Obtener el lienzo interno de dibujo
mueve(self, delta_x: int, delta_y: int)
Mueve la figura en sentido horizontal y vertical
 
Args:
    delta_x: Píxeles a mover en sentido horizontal
    delta_y: Píxeles a mover en sentido vertical

Data descriptors inherited from Figura:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class Rectangulo(Figura)
    Rectangulo(dib: dibujo.Dibujo, xmin, ymin, xmax, ymax, color)
 
Define un rectángulo para dibujar en un objeto de la clase Dibujo
 
 
Method resolution order:
Rectangulo
Figura
builtins.object

Methods defined here:
__init__(self, dib: dibujo.Dibujo, xmin, ymin, xmax, ymax, color)
Crea el rectángulo de esquinas situadas en (xmin, ymin) y (xmax, ymax)
 
Args:
    dib: El objeto de la clase Dibujo que representa la ventana
    xmin: Coordenada x de la esquina superior izquierda del rectángulo
    ymin: Coordenada y de la esquina superior izquierda del rectángulo
    xmax: Coordenada x de la esquina inferior derecha del rectángulo
    ymax: Coordenada y de la esquina inferior derecha del rectángulo
    color: El color de la línea. Ejemplo "red", "dark green"

Methods inherited from Figura:
borra(self)
Borra la figura del dibujo
coloca(self, c_x: int, c_y: int)
Coloca la figura en las coordenadas indicadas
 
Args:
    c_x: Coordenada x donde se coloca el centro de la figura
    c_y: Coordenada y donde se coloca el centro de la figura
get_canvas(self)
Obtener el lienzo interno de dibujo
mueve(self, delta_x: int, delta_y: int)
Mueve la figura en sentido horizontal y vertical
 
Args:
    delta_x: Píxeles a mover en sentido horizontal
    delta_y: Píxeles a mover en sentido vertical

Data descriptors inherited from Figura:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class Texto(Figura)
    Texto(dib: dibujo.Dibujo, pos_x: int, pos_y: int, texto: str, color: str, size: int = 14)
 
Define un texto para representar en un objeto de la clase Dibujo
 
 
Method resolution order:
Texto
Figura
builtins.object

Methods defined here:
__init__(self, dib: dibujo.Dibujo, pos_x: int, pos_y: int, texto: str, color: str, size: int = 14)
Crea el texto situado en la posición indicada
 
Args:
    dib: El objeto de la clase Dibujo que representa la ventana
    pos_x: Coordenada x del centro del texto
    pos_y: Coordenada y del centro del texto
    texto: El texto a representar
    color: El color de la línea. Ejemplo "red", "dark green"
    size: El tamaño de la letra

Methods inherited from Figura:
borra(self)
Borra la figura del dibujo
coloca(self, c_x: int, c_y: int)
Coloca la figura en las coordenadas indicadas
 
Args:
    c_x: Coordenada x donde se coloca el centro de la figura
    c_y: Coordenada y donde se coloca el centro de la figura
get_canvas(self)
Obtener el lienzo interno de dibujo
mueve(self, delta_x: int, delta_y: int)
Mueve la figura en sentido horizontal y vertical
 
Args:
    delta_x: Píxeles a mover en sentido horizontal
    delta_y: Píxeles a mover en sentido vertical

Data descriptors inherited from Figura:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
Data
        List = typing.List
Tuple = typing.Tuple