Dibujando óvalos
Para dibujar un
óvalo se utiliza la siguiente sintaxis:
from tkinter import *
ventana = Tk()
lienzo = Canvas(ventana, width = 300, height = 300)
lienzo.pack()
lienzo.create_oval(50,50,
200,200)
Esto muestra lo
siguiente:
create_oval utiliza coordenadas como si de un rectángulo se tratase.
Esto es así, porque el rectángulo le indica a Tkinter el espacio que tiene para
dibujar el óvalo. Por ejemplo, si dibujamos un rectángulo con las mismas
coordenadas o parámetros que utilizamos para crear el óvalo anterior, nuestro
rectángulo cubriría toda el área ocupada por el óvalo. Veamos a lo que me
refiero. Agregaré la siguiente línea al programa anterior y luego lo ejecutaré.
from tkinter import *
ventana = Tk()
lienzo = Canvas(ventana, width = 300, height = 300)
lienzo.pack()
lienzo.create_oval(50,50, 200,200)
lienzo.create_rectangle(50,50, 200,200)
Entonces,
para dibujar un óvalo, hay que imaginar que se dibuja un rectángulo imaginario,
ya que nuestro óvalo se dibujará dentro de él.
Otro
ejemplo:
from tkinter import *
ventana = Tk()
lienzo = Canvas(ventana, width = 300, height = 300)
lienzo.pack()
lienzo.create_oval(50,50,
200,100)
Si se
hiciera un rectángulo con los mismos parámetros, ocurriría lo mismo que el
ejemplo anterior. Veamos
from tkinter import *
ventana = Tk()
lienzo = Canvas(ventana, width = 300, height =
300)
lienzo.pack()
lienzo.create_oval(50,50, 200,100)
lienzo.create_rectangle(50,50, 200,100)
Rellenando
con color
Para dibujar una
figura rellena con algún color, simplemente se debe agregar el parámetro fill,
de esta forma:
fill =
"color"
Por ejemplo, para
dibujar un cuadrado relleno de color azul, se hace de la siguiente manera:
from tkinter import *
ventana = Tk()
lienzo = Canvas(ventana, width =
400, height = 300)
lienzo.pack()
lienzo.create_rectangle(50,50,200,200, fill = "blue")
Vamos a hacer un programa que muestre un botón y un
cuadrado. Cuando se presione ese botón, el cuadrado cambiará de color. Veamos
una forma de lograr esto:
from tkinter import *
def cuadro_color():
cadena = int(modelo.get())
color = ""
if cadena == 1:
color = "green"
if cadena == 2:
color = "red"
if cadena == 3:
color = "blue"
if cadena == 4:
color = "orange"
if cadena == 5:
color = "yellow"
if cadena == 6:
color = "pink"
if cadena == 7:
color = "purple"
if cadena == 8:
color = "violet"
if cadena == 9:
color = "magenta"
if cadena == 10:
color = "cyan"
cuadro =
lienzo.create_rectangle(50,50,100,100, fill = color)
cadena = cadena + 1
if cadena >=
10:
cadena = 1
model(cadena)
def
model(valor):
modelo.set(valor)
ventana = Tk()
lienzo =
Canvas(ventana, width = 150, height = 150)
modelo = StringVar()
modelo.set(1)
cuadro = lienzo.create_rectangle(50,50,100,100)
boton =
Button(ventana, text = "Enviar", command = cuadro_color)
lienzo.pack()
boton.pack(side =
BOTTOM)
Al presionar el botón, cambia los colores del cuadrado.
En este programa ocupé la función
creada en el capítulo anterior de python (destacada con amarillo). En esa
ocasión mencioné que me sería útil para ir actualizando valores, bueno, aquí un
pequeño ejemplo de ello.
Color de la línea de borde
Por defecto, las figuras vienen con un
borde de color negro, pero eso se puede modificar si se agrega el
argumento outline de la siguiente forma. Ejemplo:
cuadrado =
lienzo.create_rectangle(100,100,200,200, outline = "blue")
Esto se vería de la siguiente forma:
Creando otros tipos de
polígonos
Para crear otro tipo de polígonos, se
utiliza la función create_polygon. Con esta función, por ejemplo, si quisiera
crear un triángulo, tendría que indicar tres grupos de coordenadas xy o si
quisiera crear un hexágono, tendría que indicar seis grupos de coordenadas xy
etc.
Ejemplo de creación de un triángulo
from
tkinter import *
ventana
= Tk()
lienzo
= Canvas(ventana, width = 300, height = 300)
lienzo.pack()
triangulo =
lienzo.create_polygon(20,20,20,100,100,100)
Por defecto, la figura viene con un
relleno de color negro, para cambiar el color se debe colocar como ya dijimos
el argumento fill = "color" o si deseamos que la figura no tenga
relleno, entonces se debe indicar una cadena
vacía en lugar del color, pero al hacer eso, debemos especificar el color del borde, de lo contrario no se dibujará la
figura. De esta manera:
triangulo
= lienzo.create_polygon(20,20,20,100,100,100, fill = "", outline = "black")
El hexágono me quedó de la siguiente manera:
h =
lienzo.create_polygon(50,20,80,50,80,80,50,110,20,80,20,50, fill =
"", outline = "black")
Elementos
al azar
Podemos crear
figuras en distintas posiciones de la ventana si ocupamos el modulo random.
Este módulo nos permite crear un número al azar. Para ocupar este módulo lo
primero que se debe hacer es importarlo de la siguiente manera:
import random
Luego, para
crear el número al azar, se utiliza la función random.randrange(x), donde x
corresponde al límite del rango de números seleccionados al azar. Por ejemplo
si X es igual a 10, eso quiere decir que el número al azar será un número entre
0 y 9
Ejemplo:
En el ejemplo
anterior se pudo ver un simple ejemplo del uso del módulo random.
Otro ejemplo
del uso de random, será crear coordenadas al azar para crear distintos tipos de
triángulos. El código me quedó de la siguiente manera:
from tkinter import *
import random
ventana = Tk()
lienzo = Canvas(ventana, height =
300, width = 300)
x1 = random.randrange(200)
y1 = random.randrange(200)
x2 = random.randrange(200)
y2 = random.randrange(200)
x3 = random.randrange(200)
y3 = random.randrange(200)
triangulo =
lienzo.create_polygon(x1,y1,x2,y2,x3,y3,fill = "",outline =
"black")
lienzo.pack()
Al ejecutar el programa, se creará un triángulo
con coordenadas al azar.
Esto es todo por ahora. Hasta la próxima
Gustavo J. Cerda Nilo
Septiembre 2016, Octubre 2016
No hay comentarios:
Publicar un comentario