Mi Figura con tkinter, y seleccion de colores


Para trabajar en figuras con tkinter es como si trabajaremos en el 4to cuadrante de un plano cartesiano, nada mas que la Y en lugar de ser negativa sera positiva, y al igual que en el plano cartesiano tomamos primero Y y después Y

La siguiente imagen la he creado para trabajar en el plano de coordenadas de tkinter, una es de 200x200 pixeles y la otra es de 500x500 pixeles:



La siguiente figura es la que hare:



# -*- coding: utf-8 -*-
from Tkinter import *
import tkColorChooser #libreria para obtener la gama de colores

#crecion de la ventana principal
v0 = Tk()
v0.title('Ventana principal')
v0.config(bg = 'brown') #bg para el color de fondo de la ventana
v0.geometry('500x500')#tamaño de la ventana
#v0.iconbitmap("descarga.ico")#para cambiar el icono de la ventana

def mostrar(num):
    #aparece la gamade colores RGB o en numero hexadecimal
    a=tkColorChooser.askcolor(title="Color de contorno")
    b=tkColorChooser.askcolor(title="Color de cornia y partes iluminadas")
    c = tkColorChooser.askcolor(title="Color de piel iluminada")
    d = tkColorChooser.askcolor(title="Color de sombra clara")
    e = tkColorChooser.askcolor(title="Color de sombra oscurra")
    f = tkColorChooser.askcolor(title="Color de sombra media")
    g = tkColorChooser.askcolor(title="Color de pupila")
    h = tkColorChooser.askcolor(title="Color de iris")
    #ventana secundaria
    v1 = Toplevel(v0)
    v1.title('ventana hija')

    v1.protocol('Wn_DELETE_WINDOW',"onexit")#para cerrar la ventana por medio de la cruz
    v1.geometry('450x560')#tamaño de la ventana
    #v1.iconbitmap("vhija.ico")  # para cambiar el icono de la ventana
    #condiciones para los botones
    if num == 1:
        canvas1=Canvas(v1,width=200,height=200, bg='white')#(b[1])) esto es para seleccionar el color de fondo# OBJETO DE LA TKINTER   CANVAS(FIGURAS)     200 pixeles de ancho 200 ancho
        canvas1.pack(expand = YES, fill = BOTH)  #DESPLEGAR EL CANVAS, EXPAND QUE SEA EXPANDIBLE
       # puntos = [0, 0, 0, 10, 10, 10, 10, 20]
        #canvas1.create_polygon(puntos, width=10, fill=(a[1]))

        #Cabeza
        canvas1.create_polygon(50, 170,    50,  120,   60,  120,   60,  100,
                               70, 100,    70,  90,    90,  90,    90,  80,
                               160, 80,    160, 60,    170, 60,    170, 50,
                               190, 50,    190, 40,    230, 40,    230, 50,
                               240, 50,    240, 80,    230, 80,    230, 90,
                               270, 90,    270, 100,   290, 100,   290, 110,
                               300, 110,   300, 120,   310, 120,   310, 160,
                               300, 160,   300, 170,   290, 170,   290, 180,
                               280, 180,   280, 190,   200, 190,   50,  170, width=10,   fill=(a[1]))  # fill='black')#negro

                               # beige
        canvas1.create_polygon(70,  150,   140, 120,   180, 120,   270, 130,
                               270, 180,   210, 180,   210, 200,   200, 220,
                               170, 250,   80,  250,   60,  240,   40,  220,
                               40,  200,   50,  180,   60,  170,   70, 150, width=10,   fill=(c[1]))  # fill="#%02x%02x%02x" % (240, 230, 140))

        canvas1.create_polygon(30,  200,   30,  220,   40,  220,   40,  230,
                               50,  230,   50,  240,   60,  240,   60,  250,
                               80,  250,   80,  260,   110, 260,   110, 300,
                               120, 300,   120, 330,   130, 330,   130, 350,
                               140, 350,   140, 360,   150, 360,   150, 370,
                               160, 370,   160, 380,   170, 380,   170, 370,
                               160, 370,   160, 360,   150, 360,   150, 350,
                               140, 350,   140, 330,   130, 330,   130, 300,
                               120, 300,   120, 260,   170, 260,   170, 250,
                               180, 250,   180, 240,   190, 240,   190, 230,
                               200, 230,   200, 220,   210, 220,   210, 200,
                               220, 200,   220, 190,   250, 190,   250, 180,
                               280, 150,   280, 140,   270, 140,   270, 130,
                               260, 130,   260, 120,   210, 120,   210, 130,
                               200, 130,   200, 140,   210, 140,   210, 130,
                               260, 130,   260, 140,   270, 140,   270, 150,
                               280, 150,   250, 180,   210, 180,   210, 200,
                               200, 200,   200, 220,   190, 220,   190, 230,
                               180, 230,   180, 240,   170, 240,   170, 250,
                               80,  250,   80,  240,   60,  240,   60,  230,
                               50,  230,   50,  220,   40,  220,   40,  200,
                               30,  200,   width=10,   fill=(f[1]))  # fill="#%02x%02x%02x" % (210, 106, 30) ) #barro

        canvas1.create_polygon(220, 50,    190, 50,    190, 60,    170, 60,
                               170, 80,    160, 80,    160, 90,    140, 100,
                               110, 100,   110, 90,    90,  90,    90,  110,
                               110, 110,   110, 100,   130, 100,   130, 110,
                               140, 110,   140, 120,   90,  120,   90,  130,
                               80,  130,   80,  140,   70,  140,   70,  150,
                               130, 150,   130, 140,   140, 140,   140, 120,
                               210, 110,   230, 110,   230, 100,   210, 100,
                               210, 110,   140, 120,   140, 100,   160, 90,
                               170, 90,    170, 70,    190, 70,    190, 60,
                               220, 60,    220, 60,    width=10, fill=(b[1]))#fill='white')#blanco

                               # cafemarrom
        canvas1.create_polygon(70, 100,    70, 120,    60,  120,    60,  170,
                               50, 170,    50, 180,    60,  180,    60,  170,
                               70, 170,    70, 140,    80,  140,    80,  130,
                               90, 130,    90, 120,    100, 120,    100, 110,
                               90, 110,    90, 100,    70,  100,    width=10, fill=(d[1]))  # fill="#%02x%02x%02x" % (250, 133, 63))

        canvas1.create_rectangle(180, 120, 210, 130,   width=1, fill=(d[1]), outline=(d[1]))# fill="#%02x%02x%02x" % (250, 133, 63),outline="#%02x%02x%02x" % (250, 133, 63))

        canvas1.create_polygon(290, 120,   300, 120,   300, 160,    290, 160,
                               290, 170,   280, 170,   280, 180,    250, 180,
                               250, 170,   260, 170,   260, 160,    270, 160,
                               270, 150,   280, 150,   280, 140,    290, 140,
                               290, 120,   width=10,   fill=(d[1]))  # fill="#%02x%02x%02x" % (250, 133, 63))

                              #cafe

        canvas1.create_polygon(200, 100,   190, 100,   180, 100,    180, 90,
                               170, 90,    170, 70,    190, 70,     190, 60,
                               220, 60,    220, 50,    230, 50,     230, 80,
                               220, 80,    220, 90,    200, 90,     200, 100,
                               200, 110,   180, 110,   180, 100,    160, 100,
                               160, 90,    110, 90,    110, 110,    100, 110,
                               100, 120,   130, 120,   130, 100,    140, 100,
                               140, 110,   130, 110,   130, 120,    260, 120,
                               260, 130,   270, 130,   270, 140,    290, 140,
                               290, 110,   270, 110,   270, 100,    230, 100,
                               230, 110,   210, 110,   210, 100,    200, 100, width=10,   fill=(e[1]))  # fill="#%02x%02x%02x" % (139, 69, 19))

        #NARIZ
        canvas1.create_rectangle(20, 170,  50, 200,    width=1, fill=(a[1]), outline=(a[1]))#fill="black", outline="black")#negro

        canvas1.create_rectangle(30, 180,  40, 190,    width=1, fill=(e[1]), outline=(e[1]))#fill="#%02x%02x%02x" % (139, 69, 19),outline="#%02x%02x%02x" % (139, 69, 19))#cafe

        #OJO
        canvas1.create_polygon(140, 160,   140, 170,   110, 170,    110, 180,
                               100, 180,   100, 190,   90,  190,    90,  220,
                               100, 220,   100, 230,   130, 230,    130, 220,
                               160, 220,   160, 210,   170, 210,    170, 170,
                               180, 170,   180, 160,   140, 160,    width=10, fill=(a[1]))  # fill='black')#negro

        canvas1.create_polygon(100, 200,   100, 190,   110, 190,    130, 180,
                               160, 180,   160, 210,   150, 210,    150, 220,
                               140, 220,   100, 200,   width=10, fill=(b[1]))  # fill='white')#blanco

        canvas1.create_rectangle(100, 210, 130, 220,   width=1, fill=(g[1]), outline=(g[1]))  # fill="sky blue", outline="sky blue")#celeste

        canvas1.create_polygon(100, 210,   100, 200,   110, 200,    110, 180,
                               130, 180,   130, 190,   140, 190,    140, 220,
                               130, 220,   130, 210,   width=10, fill=(h[1]))  # fill='blue')#azul
        # cuerpo
                 #MARRON
        canvas1.create_polygon(160, 450,   150, 450,   150, 480,    140, 480,
                               140, 500,   120, 500,   120, 450,    130, 450,
                               130, 450,   140, 450,   140, 360,    150, 360,
                               150, 370,   160, 370,   160, 450,    160, 480,
                               150, 480,   150, 500,   180, 500,    180, 470,
                               190, 470,   190, 430,   200, 430,    200, 380,
                               210, 380,   210, 350,   220, 350,    260, 320,
                               270, 340,   270, 370,   280, 380,    280, 430,
                               270, 470,   270, 500,   310, 500,    330, 420,
                               330, 420,   340, 400,   360, 400,    360, 480,
                               350, 480,   350, 500,   400, 500,    400, 430,
                               420, 430,   420, 370,   390, 370,    390, 360,
                               360, 210,   340, 190,   340, 260,    250, 300,
                               140, 260,   130, 260,   130, 290,    145, 340,
                               170, 370,   170, 450,   160, 450,    width=10, fill=(d[1]))
                 #NEGRO
        canvas1.create_polygon(130, 350,   130, 450,   120, 450,    120, 480,
                               110, 480,   110, 500,   120, 500,    120, 510,
                               180, 510,   180, 500,   190, 500,    190, 470,
                               200, 470,   200, 430,   210, 430,    210, 380,
                               200, 380,   200, 430,   190, 430,    190, 470,
                               180, 470,   180, 500,   150, 500,    150, 480,
                               160, 480,   160, 450,   170, 450,    170, 380,
                               160, 380,   160, 450,   150, 450,    150, 480,
                               140, 480,   140, 500,   120, 500,    120, 480,
                               130, 480,   130, 450,   140, 450,    140, 350,
                               130, 350,   width=10, fill=(a[1]))


        canvas1.create_polygon(260, 340,   260, 370,   270, 370,    270, 380,
                               280, 380,   280, 430,   270, 430,    270, 470,
                               260, 470,   260, 500,   270, 500,    270, 510,
                               310, 510,   310, 500,   320, 500,    320, 460,
                               330, 460,   330, 420,   340, 420,    340, 400,
                               360, 400,   360, 450,   350, 450,    350, 480,
                               340, 480,   340, 500,   350, 500,    350, 510,
                               390, 510,   390, 500,   400, 500,    400, 470,
                               410, 470,   410, 430,   420, 430,    420, 410,
                               430, 410,   430, 380,   420, 380,    420, 370,
                               410, 370,   410, 360,   390, 360,    390, 370,
                               410, 370,   410, 380,   420, 380,    420, 410,
                               410, 410,   410, 430,   400, 430,    400, 470,
                               390, 470,   390, 500,   350, 500,    350, 480,
                               360, 480,   360, 450,   370, 450,    370, 390,
                               340, 390,   340, 380,   320, 380,    320, 370,
                               310, 370,   310, 360,   300, 360,    300, 350,
                               290, 350,   290, 340,   280, 340,    280, 350,
                               290, 350,   290, 360,   300, 360,    300, 370,
                               310, 370,   310, 380,   320, 380,    320, 390,
                               340, 390,   340, 400,   330, 400,    330, 420,
                               320, 420,   320, 460,   310, 460,    310, 500,
                               270, 500,   270, 470,   280, 470,    280, 430,
                               290, 430,   290, 380,   280, 380,    280, 370,
                               270, 370,   270, 340,   260, 340,    width=10, fill=(a[1]))

        canvas1.create_polygon(160, 250,   160, 260,   170, 260,    170, 270,
                               180, 270,   180, 280,   200, 280,    200, 270,
                               220, 270,   220, 260,   240, 260,    240, 250,
                               260, 250,   260, 240,   320, 240,    320, 250,
                               340, 250,   340, 200,   350, 200,    350, 210,
                               360, 210,   360, 220,   370, 220,    370, 210,
                               360, 210,   360, 200,   350, 200,    350, 190,
                               340, 190,   340, 180,   330, 180,    330, 240,
                               320, 240,   320, 230,   260, 230,    260, 240,
                               240, 240,   240, 250,   220, 250,    220, 260,
                               200, 260,   200, 270,   180, 270,    180, 260,
                               170, 260,   170, 250,   160, 250,    width=10, fill=(a[1]))

                    #cafe
        canvas1.create_polygon(140, 260,   140, 270,   150, 270,    150, 280,
                               160, 280,   160, 290,   200, 290,    200, 300,
                               320, 300,   320, 290,   330, 290,    330, 280,
                               340, 280,   340, 250,   320, 250,    320, 240,
                               260, 240,   260, 250,   240, 250,    240, 260,
                               220, 260,   220, 270,   200, 270,    200, 280,
                               180, 280,   180, 270,   170, 270,    170, 260,
                               140, 260,   width=10, fill=(e[1]))

                #beige
        canvas1.create_rectangle(220, 270, 240, 290, width=1, fill=(c[1]), outline=(c[1]))

        canvas1.create_rectangle(260, 250, 280, 270, width=1, fill=(c[1]), outline=(c[1]))

        canvas1.create_rectangle(280, 270, 300, 290, width=1, fill=(c[1]), outline=(c[1]))

        canvas1.create_rectangle(290, 240, 310, 250, width=1, fill=(c[1]), outline=(c[1]))

        canvas1.create_polygon(370, 220,   370, 230,   380, 230,    380, 260,
                               370, 260,   370, 270,   380, 270,    380, 290,
                               390, 290,   390, 330,   380, 330,    380, 350,
                               370, 350,   370, 340,   360, 340,    360, 220,
                               370, 220,   width=10, fill=(c[1]))

        canvas1.create_polygon(210, 360, 220, 360, 220, 350, 230, 350,
                               230, 340, 250, 340, 250, 330, 290, 330,
                               290, 340, 300, 340, 300, 320, 290, 320,
                               290, 310, 260, 310, 260, 320, 240, 320,
                               240, 330, 230, 330, 230, 340, 220, 340,
                               220, 350, 210, 350, 210, 360, width=10, fill=(c[1]))

        canvas1.create_polygon(120, 260, 120, 300, 130, 300, 130, 330,
                               140, 330, 140, 350, 150, 350, 150, 360,
                               160, 360, 160, 370, 170, 370, 170, 350,
                               160, 350, 160, 340, 150, 340, 150, 320,
                               140, 320, 140, 290, 130, 290, 130, 260,
                               120, 260, width=10, fill=(c[1]))

          #blanco
        canvas1.create_polygon(150, 290, 150, 300, 160, 300, 160, 320,
                               170, 320, 170, 330, 180, 330, 180, 380,
                               170, 380, 170, 420, 180, 420, 180, 380,
                               190, 380, 190, 350, 200, 350, 200, 340,
                               210, 340, 210, 330, 200, 330, 200, 320,
                               190, 320, 190, 310, 170, 310, 170, 300,
                               160, 300, 160, 290, 150, 290, width=10, fill=(b[1]))

        canvas1.create_polygon(320, 340, 330, 340, 330, 360, 340, 360,
                               340, 330, 330, 330, 330, 320, 320, 320,
                               320, 340,  width=10, fill=(b[1]))

        canvas1.create_polygon(350, 480, 350, 490, 360, 490, 360, 480,
                               370, 480, 370, 450, 380, 450, 380, 430,
                               370, 430, 370, 450, 360, 450, 360, 480,
                               350, 480,  width=10, fill=(b[1]))
                 #barro
        canvas1.create_polygon(210, 380, 220, 380, 220, 360, 230, 360,
                               230, 350, 250, 350, 250, 340, 290, 340,
                               290, 330, 250, 330, 250, 340, 230, 340,
                               230, 350, 220, 350, 220, 360, 210, 360,
                               210, 380, width=10, fill=(f[1]))

        canvas1.create_polygon(380, 360, 390, 360, 390, 330, 400, 330,
                               400, 290, 390, 290, 390, 270, 380, 270,
                               380, 260, 390, 260, 390, 230, 380, 230,
                               380, 220, 370, 220, 370, 230, 380, 230,
                               380, 260, 370, 260, 370, 270, 380, 270,
                               380, 290, 390, 290, 390, 330, 380, 330,
                               380, 360, width=10, fill=(f[1]))





def ocultar(ventana):ventana.destray()
def ejecutar(f):v0.after(200,f)



#botones
# V0 donde se va desplegar el boton
b1 = Button(v0, text='BAMBI', command=lambda: ejecutar(mostrar(1)))
b1.grid(row=1, column=1)  # desplegar boton



v0.mainloop()



El resultado es el siguiente:

Comentarios

Entradas más populares de este blog

Ejercicios en PyCharm

1.1 Aplicaciones gráficas por computadora.

Ensayo de lenguaje ensamblador