miércoles, 12 de septiembre de 2018

Ventana con boton que despliega una figura en un lienzo (Practica No. 9)

En esta ocasion vamos a ver un programa que, al igual que los anteriores con la libreria Tkinter nos permitira visualizar una ventana con diferentes caracteristicas y un boton que despliegue una figura.

CODIGO

from Tkinter import *

def lineas(ventanaP):
    lineas= Canvas(width=210, height=210,bg="black") #lienzo donde va la figura
    lineas.pack() #carga la linea
    lineas.create_line(0,200,200,0, width=10, fill="white") #cordenadas de la linea a crear

def ejecutar(f):
    ventanaP.after(200,f)  #ejecuta las funciones

ventanaP=Tk()
ventanaP.title("Ventana de figura con un boton")
ventanaP.config(bg="purple")  #color de fondo de la ventana
ventanaP.geometry("500x500")  #tamano de la ventana a crear

boton=Button(ventanaP, text="Mostrar linea",command=lambda : ejecutar(lineas(ventanaP))) #comando lambda para llamar a las funciones
boton.pack()
ventanaP.mainloop()


      






Tenemos definidos dos procesos con la instruccion "def" que son lineas(que recibe como parametro la ventana que vamos a crear) y ejecutar(sera el encargado de iniciar todo el programa).

Como podemos observar, dentro de ventana se ven nuevas funciones que permiten la configuracion de su "background" con un color solido, al igual que las dimensiones que tendra nuestra ventana.

Dentro de la intruccion lineas tenemos varias funciones que nos permiten realizar diversas cosas; primeramente con Canvas nos permite crear un lienzo con las especificaciones necesarias para el trazado de la linea que queremos (ancho,alto y el color que tendra nuestro lienzo), de igual forma la funcion "create_line" nos da la opcion de especificar como queremos la linea a dibujar.

Resultado




Una pequeña configuracion.
Como vemos en la siguiente imagen, la funcion ejecutar esta en comentario y ahora en lugar de dibujar una linea sera un cuadrado(debido a las medidas que se le dieron).
Lo que permite optimizar un poco el codigo que antes se tenia con un solo procedimiento pero para una figura diferente (dependiendo de la funcion "create" que se utilice).





Modificando las medidas y la funcion tenemos otros dos ejemplos con la misma funcion "create_rectangle" y "create_oval"

Rectangulo
from Tkinter import *

def Rectangulo(ventanaP):
    Rectangulo= Canvas(width=210, height=210,bg="black") #lienzo donde va la figura
    Rectangulo.pack() #carga la linea
    Rectangulo.create_rectangle(10,10,200,100, width=10, fill="white") #cordenadas de la linea a crear

#def ejecutar(f):
    #ventanaP.after(200,f)  #ejecuta las funciones

ventanaP=Tk()
ventanaP.title("Ventana de figura con un boton")
ventanaP.config(bg="purple")  #color de fondo de la ventana
ventanaP.geometry("500x500")  #tamano de la ventana a crear

boton=Button(ventanaP, text="Mostrar linea",command=lambda : Rectangulo(ventanaP)) #comando lambda para llamar a las funciones
boton.pack()
ventanaP.mainloop()








Circulo
from Tkinter import *

def circulo(ventanaP):
    circulo= Canvas(width=210, height=210,bg="black") #lienzo donde va la figura
    circulo.pack() #carga la linea
    circulo.create_oval(10,10,200,200, width=10, fill="white") #cordenadas de la linea a crear

#def ejecutar(f):
    #ventanaP.after(200,f)  #ejecuta las funciones

ventanaP=Tk()
ventanaP.title("Ventana de figura con un boton")
ventanaP.config(bg="purple")  #color de fondo de la ventana
ventanaP.geometry("500x500")  #tamano de la ventana a crear

boton=Button(ventanaP, text="Mostrar linea",command=lambda : circulo(ventanaP)) #comando lambda para llamar a las funciones
boton.pack()
ventanaP.mainloop()

       






1 comentario:

  1. from Tkinter import *

    ventanaP = Tk() #crea una objeto tipo ventana
    ventanaP.title("Hare un poligono")
    ventanaP.config(bg="brown") #Dar color al fondo de la ventana
    ventanaP.geometry('500x500') #Dar ancho y alto de la ventana en pixeles

    def poligono(ventanaP):
    panel = Canvas(width= 400, height = 400, bg = 'red')#seria el lienzo canvas deon va fig
    panel.create_polygon(200, 10, 380, 280, 10, 100, 360, 100, 10, 280, width=5, fill='', outline='green') #Coordenadas para la creacion del poligono
    panel.pack()

    #def ejecutar(f):
    #ventanaP.after(200, f)#forma de ejecutar las funciones

    boton = Button(ventanaP, text="Mostrar linea" , command= lambda: poligono(ventanaP))
    boton.pack()
    ventanaP.mainloop()

    ResponderBorrar