Paint con la libreria turtle
Este programa es una aportación de un compañero de generaciones superiores utilizando la librería turtle
Código
Resultado:
Código
# -*- 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()
Resultado:
Comentarios
Publicar un comentario