Diario
de un programador. Día 183
Dibujando
gráficos
Al igual que en Small Basic, aquí también se pueden dibujar gráficos,
tales como líneas, círculos, cuadrados etc. Siendo la base casi la misma,
solamente cambiando un poco la sintaxis.
Para crear los gráficos antes mencionados, se debe crear además de la
ventana, un lienzo(canvas). El lienzo es
el que nos permite dibujar. Imaginar que la ventana es el escritorio de un
pintor y el lienzo es el papel donde dibujará sus creaciones.
A diferencia del botón que utiliza los parámetros text y command, un
lienzo(objeto canvas) necesita los parámetros ancho y alto (en pixeles) y el
resto del código es casi lo mismo que el utilizado para crear un botón:
Ejemplo:
from tkinter import *
ventana = Tk()
lienzo = Canvas(ventana, width = 300, height = 300)
lienzo.pack()
Al cambiar los parámetros ancho y alto (width, height) cambia el
tamaño de la ventana y por ende el tamaño del lienzo.
Al ejecutar el programa anterior, esto es lo que se puede ver:
A simple vista el lienzo tiene la misma apariencia que la ventana,
pero créeme... está ahí y permite el dibujo de gráficos.
Como dije en un principio, esto es similar a Small Basic y por lo
mismo, aquí también hay que indicar coordenadas para dibujar las figuras,
siendo la esquina superior izquierda la coordenada 0,0.
Dibujando
líneas
Para crear una línea, se utiliza la instrucción
nombreLienzo.create_line(x1,y1, x2,y2), donde nombreLienzo, corresponde al
nombre de nuestro lienzo. Las coordenadas x1,y1 corresponden a la ubicación
inicial de la línea y las coordenadas x2,y2 corresponden a la ubicación final.
Por ejemplo para dibujar una línea diagonal, podemos hacer lo siguiente:
from tkinter import *
ventana = Tk()
lienzo = Canvas(ventana, width = 300, height =
300)
lienzo.pack()
lienzo.create_line(10,10,
50,100)
Esto
muestra lo siguiente:
Otro ejemplo:
from tkinter import
*
ventana = Tk()
lienzo = Canvas(ventana, width = 300, height = 300)
lienzo.pack()
lienzo.create_line(20,100, 100,50)
En el ejemplo, agregué la posición de las coordenadas para hacer que
se vea más claro.
Con estos conocimientos, vamos a crear un cuadrado utilizando líneas.
El código sería algo así:
from
tkinter import *
ventana =
Tk()
lienzo = Canvas(ventana, width = 400, height =
300)
lienzo.pack()
lienzo.create_line(100,50,200,50)
lienzo.create_line(100,50,100,150)
lienzo.create_line(100,150,200,150)
lienzo.create_line(200,50,200,150)
O crear un pequeño
abanico de líneas:
from tkinter import *
ventana = Tk()
lienzo = Canvas(ventana, width = 400, height =
300)
lienzo.pack()
x1 = 100
y1 = 100
for i in range(11):
lienzo.create_line(x1,y1,200,100)
x1 =
x1 + 10
y1 =
y1 - 10
x1 = 200
y1 = 0
for i in range(11):
lienzo.create_line(x1,y1,200,100)
x1 = x1 + 10
y1 = y1 + 10
Dibujando rectángulos
Al igual que en Small Basic, aquí también se pueden crear figuras
geométricas. Por ejemplo para crear un rectángulo se hace de la siguiente
manera:
lienzo.create_rectangle(x1,y1, x2,y2), donde x1,y1 corresponde a la
esquina superior izquierda del cuadrado y la coordenada x2,y2 corresponde a la
esquina inferior derecha (es como dibujar una diagonal) Ejemplo:
from tkinter import *
ventana = Tk()
lienzo = Canvas(ventana, width = 400, height = 300)
lienzo.pack()
lienzo.create_rectangle(50,50,200,200)
Otro ejemplo:
from tkinter import
*
ventana = Tk()
lienzo = Canvas(ventana, width = 400, height = 300)
lienzo.pack()
x2 = 100
y2 = 100
for i in range(10):
lienzo.create_rectangle(10,10,x2,y2)
x2 = x2 + 10
y2 = y2 + 10
Otro ejemplo:
from tkinter import
*
ventana = Tk()
lienzo = Canvas(ventana, width = 400, height = 300)
lienzo.pack()
x1 = 50
y1 = 50
x2 = 100
y2 = 100
for i in range(5):
lienzo.create_rectangle(x1,y1,x2,y2)
x1 = x1 + 25
y1 = y1 + 25
x2 = x2 + 25
y2 = y2 + 25
Otro ejemplo.
Dibujando una matriz de 7 x 7
from tkinter import *
ventana = Tk()
lienzo = Canvas(ventana, width = 400, height =
300)
lienzo.pack()
x1 = 25
y1 = 25
x2 = 50
y2 = 50
for i in range(7):
y2 = y2 + 25
y1 = y1 + 25
for j in range(7):
lienzo.create_rectangle(x1,y1,x2,y2)
x1 = x1 + 25
x2 = x2 + 25
x1 = 25
x2 = 50
Esto es todo por ahora, en el próximo tutorial se continuará esta revisión de figuras en python. Saludos.
Gustavo J. Cerda Nilo
Septiembre 2016, Octubre 2016
No hay comentarios:
Publicar un comentario