martes, 24 de octubre de 2017

Dibujar Con Turtle, Botones y Funciones. Clicks de Ratón

# -*- coding: utf-8 -*-
import turtle
from tkinter import *
from tkinter import simpledialog


v0 = Tk()
v0.title("Ventana madre")
v0.config(bg="black")
v0.geometry("500x400+80+150")
turtle.setup(600,500,600,90)
turtle.screensize(550,400)


global frente
frente=1
global angulo
angulo=0
global GrAcom
GrAcom=0
global linea
linea=1
global colorDelinea
colorDelinea="black"
#Dibujar a mano
b1 = "levantado"xAntigua, yAntigua = None, None
def click(event):
    global b1
    b1 = "abajo"
def soltarclick(event):
    global b1, xAntigua, yAntigua
    b1 = "arriba"    
    xAntigua = None
    yAntigua = None
def mover(event):
    if b1 == "abajo":
        global xAntigua, yAntigua
        if xAntigua != None and yAntigua != None:
            papel.create_line(xAntigua, yAntigua, event.x-300, event.y-250, width=linea,fill=colorDelinea, smooth=TRUE)
        xAntigua = event.x-300
        yAntigua = event.y-250
        print("x="+str(xAntigua+300)+" y="+str(yAntigua+250))



papel= turtle.getcanvas()
papel.bind("<Motion>", mover)
papel.bind("<ButtonPress>", click)
papel.bind("<ButtonRelease>", soltarclick)


b1 = Button(v0, text="Cambiar Fondo", command=lambda: fond())
b1.grid(row=1,column=1)
b2 = Button(v0,text="Pixeles", command=lambda: cantDelante())
b2.grid(row=2,column=2)
b3 = Button(v0, text="Avanzar", command=lambda: delante())
b3.grid(row=2,column=1)
b4 = Button(v0, text="Girar Derecha",command=lambda: giraDerecha())
b4.grid(row=3,column=1)
b5 = Button(v0, text="Grados", command=lambda:angDerecha())
b5.grid(row=3,column=4)
b6 = Button(v0, text="Girar Izq.",command=lambda: giraIzquierda())
b6.grid(row=3,column=2)
b7 = Button(v0, text="Color de relleno",command=lambda: rellenar())
b7.grid(row=4,column=1)
b8 = Button(v0, text="Iniciar Relleno",command=lambda: inicioRelleno())
b8.grid(row=4,column=3)
b9 = Button(v0, text="Terminar Relleno",command=lambda: finRelleno())
b9.grid(row=4,column=4)
b10 = Button(v0, text="Limpiar",command=lambda: limpiar())
b10.grid(row=5,column=1)
b11 = Button(v0, text="Reiniciar Puntero",command=lambda: Punto0())
b11.grid(row=6,column=1)
b12 = Button(v0, text="Tamaño de lineas",command=lambda: cursorTamaño())
b12.grid(row=7,column=1)
b13 = Button(v0, text="Color de lineas",command=lambda: colorLinea())
b13.grid(row=8,column=1)

label1= Label(v0,text="="+str(frente))
label1.grid(row=2,column=3)
label2= Label(v0,text="="+str(angulo))
label2.grid(row=3,column=5)
label3= Label(v0, text="Angulo actual=0",)
label3.grid(row=3,column=3)
label4= Label(v0, text="Color de relleno=...")
label4.grid(row=4,column=2)
label5= Label(v0, text="Tamaño de linea=  ...")
label5.grid(row=7,column=2)
label6= Label(v0, text="Color de linea=  ...")
label6.grid(row=8,column=2)


fonde = turtle.Screen()
turtle.colormode(255)

def delante():
    turtle.forward(frente)

def cantDelante():
    global frente
    frente = simpledialog.askinteger("Distancia a Avanzar", "Escribe los pixeles a recorrer:")
    label1.config(text="="+str(frente))

def fond():
    fondo = simpledialog.askstring("Color de fondo", "Escribe el color del fondo:")
    fonde.bgcolor(fondo)

def giraDerecha():
    turtle.right(angulo)
    global GrAcom
    GrAcom=GrAcom-angulo
    if GrAcom<0:
        GrAcom=GrAcom+360
    label3.config(text="Angulo actual="+str(GrAcom))

def angDerecha():
    global angulo
    angulo = simpledialog.askinteger("Angulo", "Escribe los grados a girar hacia la derecha:")
    label2.config(text="=" + str(angulo))

def giraIzquierda():
    turtle.left(angulo)
    global GrAcom
    GrAcom = GrAcom + angulo
    if GrAcom > 360:
        GrAcom = GrAcom - 360
    label3.config(text="Angulo actual=" + str(GrAcom))

def angIzquierda():
    global angulo
    angulo = simpledialog.askinteger("Angulo", "Escribe los grados a girar hacia la derecha:")
    label2.config(text="=" + str(angulo))

def rellenar():
    color=simpledialog.askstring("Relleno","Escribe color de relleno")
    turtle.fillcolor(color)
    label4.config(text="Color de relleno="+str(color))

def inicioRelleno():
turtle.begin_fill() def finRelleno(): turtle.end_fill() def limpiar(): turtle.clear() papel.delete("all") def Punto0(): turtle.penup() turtle.goto(0,0) turtle.pendown() def cursorTamaño(): global linea linea=simpledialog.askstring("Tamaño de contorno","Escribe el grosor de contorno") turtle.pensize(linea) label5.config(text="Tamaño de linea= "+str(linea)) def colorLinea(): global colorDelinea colorDelinea=simpledialog.askstring("Color de Lineas: ","Escribe el color de las lineas:") turtle.pencolor(colorDelinea) label6.config(text="Tamaño de linea= " + str(colorDelinea)) v0.mainloop()


No hay comentarios:

Publicar un comentario