lunes, 23 de octubre de 2017

Mini-paint usando turtle

# -*- coding: utf-8 -*-

import turtle
import Tkinter
import tkColorChooser
import tkSimpleDialog


pantalla = Tkinter.Tk()
pantalla.title("Mini paint")
pantalla.resizable(False ,False)
#Se crea la pantalla que contendra la tortuga y el menu



canvas1 = Tkinter.Canvas(pantalla, width=750, height=750)
canvas1.pack(side="left", fill="both", expand=True)
canvas2 = Tkinter.Canvas(pantalla, width=750, height=750)
canvas2.pack(side="right", fill="both", expand=True)
#Se cean los 2 canvas que estaran en la pantalla

lapiz=turtle.RawTurtle(canvas1)
 
#Secrea una rawturtle y se le dice que ponga su area de dibujo en el canvas 1

lapiz.ondrag(lapiz.goto,btn=1)
 
#Se le ordena a la tortuga que se dirija al lugar al que el usuario 
#la arrastre (ondrag) con el boton 1 (click izquierdo)#La funcion ondrag al ejecutarse regresa 2 valores , la posicion de x y y en el momento
# en el que el usuario hace click sobre la tortuga , estas coordenadas son resividas por el goto


boton101= Tkinter.Button(canvas2,text="Color del lapiz",command=lambda:lapiz.pencolor(color2()))
boton101.pack(fill="x")
boton11= Tkinter.Button(canvas2,text="Grosor del lapiz",command=lambda:tamano())
boton11.pack(fill="x")
boton12= Tkinter.Button(canvas2,text="Color del relleno",command=lambda:lapiz.fillcolor(color2()))
boton12.pack(fill="x")
boton12= Tkinter.Button(canvas2,text="Cuadrado",command=lambda:cuadradi())
boton12.pack(fill="x")
boton12= Tkinter.Button(canvas2,text="Triangulo",command=lambda:triangulo())
boton12.pack(fill="x")
boton12= Tkinter.Button(canvas2,text="Circulo",command=lambda:circulo())
boton12.pack(fill="x")
boton12= Tkinter.Button(canvas2,text="Linea recta",command=lambda:linearecta())
boton12.pack(fill="x")
boton13= Tkinter.Button(canvas2,text="Limpiar",command=lambda:limpiar())
boton13.pack(fill="x")
boton14= Tkinter.Button(canvas2,text="subir y bajar lapiz",command=lambda:sube(lapiz.isdown()))
boton14.pack(fill="x")
boton14= Tkinter.Button(canvas2,text="Borrador",command=lambda:(lapiz.pencolor("White"),lapiz.pensize(10)))
boton14.pack(fill="x")
boton14= Tkinter.Button(canvas2,text="Lapiz",command=lambda:(lapiz.pencolor("black"),lapiz.pensize(1)))
boton14.pack(fill="x")
#Menu


def color2():
    a=tkColorChooser.askcolor()
    return (a[1])
    #Funcion que asigna un color al lapiz o el relleno con ayuda de la libreria tkColorChooser , 
    #la funcion tkColorChooser.askcolor() regresa el color seleccionado en forma de RGB y de hexadecimal 
    #de la forma  (RGB, hexadecimal)    #Al escribir a[1] estamos pidiendo la notacion hexadecimal del color

def tamano():
    a=tkSimpleDialog.askinteger("Hola","Dame el grosor del lapiz")
    lapiz.pensize(a)
    #Funcion que pide el tamaño del lapiz por meedio de un tkSimpleDialog.askinteger y lo asigna al lapiz


def limpiar():
    lapiz.clear()
    #Funcion que limpia el area de dibujo

def sube(a):
    if (a==False):
        lapiz.pendown()
    elif (a==True):
        lapiz.penup()
        #Funcion que se usa para subir y bajar el lapiz , para poder dibujar de forma mas realista


def cuadradi():
    lapiz.begin_fill()
    a=tkSimpleDialog.askinteger("Hola", "Dime el tamano del cuadrado")
    for x in range(4):
        lapiz.forward(a)
        lapiz.right(90)
    lapiz.end_fill()

def triangulo():
    lapiz.begin_fill()
    a=tkSimpleDialog.askinteger("Hola", "Dime el tamano del Triangulo")
    for x in range(3):
        lapiz.forward(a)
        lapiz.left(120)
    lapiz.end_fill()

def circulo():
    lapiz.begin_fill()
    a=tkSimpleDialog.askinteger("Hola", "Dime el tamano del circulo")
    lapiz.circle(a)
    lapiz.end_fill()
#Funciones que crean figuras predeterminadas

def linearecta():
    lapiz.begin_fill()
    a=tkSimpleDialog.askinteger("Hola", "Dime el tamano de la linea")
    b=tkSimpleDialog.askinteger("Hola", "Dime el angulo de la linea")
    c=tkSimpleDialog.askinteger("Hola", "Dime el numero de lineas")
    for i in range(c):
     lapiz.left(b)
     lapiz.forward(a)
    lapiz.end_fill()
#Funcion que le permite al usuario crear lineas rectas y
# seleccionar el angulo de las mismas , asi como el numero de veces que dicha 
#linea sera dibujada ,para que asi se pueda#crear cualquier poligino regular

pantalla.mainloop()
 
 
 

 
 
 

No hay comentarios:

Publicar un comentario