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