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

# -*- 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

Entradas más populares de este blog

Ejercicios en PyCharm

1.1 Aplicaciones gráficas por computadora.

Ensayo de lenguaje ensamblador