[Tk] Elechtronic resistor 'bands
2 participantes
Página 1 de 1.
[Tk] Elechtronic resistor 'bands
Bueno, este es un programa que hise para la practica de dibujos basicos en canvas, ademas del codigo participante del concurso de programacion en un sitio.
Se trata de algo a lo que le pasamos los colores de las bandas para que las lea y genere el codigo de las recistencias electricas de un resistor o resistencias.
Teniendo en cuenta el diseño y que esto no es visual basic esto es algo genial, porque le di botones redondos e improvisados.
[Tienes que estar registrado y conectado para ver esa imagen]
Saludos!
Se trata de algo a lo que le pasamos los colores de las bandas para que las lea y genere el codigo de las recistencias electricas de un resistor o resistencias.
Teniendo en cuenta el diseño y que esto no es visual basic esto es algo genial, porque le di botones redondos e improvisados.
[Tienes que estar registrado y conectado para ver esa imagen]
- Código:
# -*- coding: utf-8 -*-
from Tkinter import *
from tkMessageBox import showinfo, showerror
from platform import system as OperatingSystem
from os.path import exists# comprueba si existe el icono del program, si no existe se lanza un msg error
from os import getcwd# obtiene la ruta del icono del programa
class Body:
def __init__(self):
self.ventana = Tk()
self.ventana.title("Elechtronic resistor")
self.ventana.geometry("400x300+200+200")
self.ventana.resizable(False, False)
icon = "ElectrResistIcon.ico" if OperatingSystem()=="Windows" else "ElectrResistIcon.png"
try:
self.ventana.iconbitmap(icon)
ERROR_Ico = False
except:
ERROR_Ico = True
self.Dibujos = Canvas(self.ventana, bg="#fadca0", highlightbackground="sienna")
self.Dibujos.place(x=0, y=0, width=400, height=300)
self.IDOvaloIzquierdo = self.Dibujos.create_oval(40,10, 140, 110, fill="sienna")
self.IDOvaloDerecho = self.Dibujos.create_oval(260,10, 360, 110, fill="sienna")
self.IDCentro = self.Dibujos.create_rectangle(120,20, 280,100, fill="sienna")
self.IDAlambreIzquierda = self.Dibujos.create_rectangle(3,50, 42,70, fill="gray65")
self.IDAlambreDerecha = self.Dibujos.create_rectangle(358,50, 396,70, fill="gray65")
self.Banda1 = self.Dibujos.create_rectangle(120,20, 146,100, fill="sienna")
self.Banda2 = self.Dibujos.create_rectangle(149,20, 175,100, fill="sienna")
self.Banda3 = self.Dibujos.create_rectangle(178,20, 204,100, fill="sienna")
self.Banda4 = self.Dibujos.create_rectangle(207,20, 233,100, fill="sienna")
self.Banda5 = self.Dibujos.create_rectangle(254,20, 280,100, fill="sienna")
self.Dibujos.create_line(254,20, 280,100, fill="red")#NO HAY TOLERANCIA PRECENSIADA
self.Dibujos.create_line(280,20, 254,100, fill="red")#NO HAY TOLERANCIA PRECENSIADA
self.BandasColores = [self.Banda1, self.Banda2, self.Banda3, self.Banda4, self.Banda5]
#botones redondos:
self.BotonNegro = self.Dibujos.create_oval(10,150, 37,200, fill="gray15")
self.BotonMarron = self.Dibujos.create_oval(42,150, 69,200, fill="#502800")
self.BotonRojo = self.Dibujos.create_oval(74,150, 101,200, fill="red3")
self.BotonNaranja = self.Dibujos.create_oval(106,150, 133,200, fill="#fa6e00")
self.BotonAmarillo = self.Dibujos.create_oval(138,150, 165,200, fill="yellow3")
self.BotonVerde = self.Dibujos.create_oval(170,150, 197,200, fill="green4")
self.BotonAzul = self.Dibujos.create_oval(202,150, 229,200, fill="blue")
self.BotonVioleta = self.Dibujos.create_oval(234,150, 261,200, fill="#500a5a")
self.BotonGris = self.Dibujos.create_oval(266,150, 293,200, fill="gray45")
self.BotonBlanco = self.Dibujos.create_oval(298,150, 325,200, fill="gray88")
self.BotonDorado = self.Dibujos.create_oval(330,150, 357,200, fill="gold4")
self.BotonPlateado = self.Dibujos.create_oval(362,150, 389,200, fill="gray75")
self.BotonBorrarBanda = self.Dibujos.create_oval(260,115, 287,142, fill="gray90")
self.LineaEnBotonBorrar = self.Dibujos.create_line(265,120, 285,135, fill="red")
self.TituloDeSeleccionado = self.Dibujos.create_text(170,10)
self.NombreColor = {"gray20":"Negro", "#966400":"Marrón", "red":"Rojo", "#f09600":"Naranja", "#f0dc00":"Amarillo",
"green":"Verde", "#1446fa":"Azul", "#6e3c8c":"Violeta", "gray55":"Gris", "white":"Blanco", "gold2":"Dorado", "gray85":"Plateado"}
#Agregando brillo si el mouse esta sobre boton redondo:
self.BrillarColorBoton(self.BotonNegro, "gray20", "gray15", "Negro")
self.BrillarColorBoton(self.BotonMarron, "#966400", "#502800", "Marron")
self.BrillarColorBoton(self.BotonRojo, "red", "red3", "Rojo")
self.BrillarColorBoton(self.BotonNaranja, "#f09600", "#fa6e00", "Naranja")
self.BrillarColorBoton(self.BotonAmarillo, "#f0dc00", "yellow3", "Amarillo")
self.BrillarColorBoton(self.BotonVerde, "green", "green4", "Verde")
self.BrillarColorBoton(self.BotonAzul, "#1446fa", "blue", "Azul")
self.BrillarColorBoton(self.BotonVioleta, "#6e3c8c", "#500a5a", "Violeta")
self.BrillarColorBoton(self.BotonGris, "gray55", "gray45", "Gris")
self.BrillarColorBoton(self.BotonBlanco, "white", "gray88", "Blanco")
self.BrillarColorBoton(self.BotonDorado, "gold2", "gold4", "Dorado")
self.BrillarColorBoton(self.BotonPlateado, "gray85", "gray75", "Plateado")
#Diendo comando a los botones redondos:
self.Dibujos.tag_bind(self.BotonNegro, "<ButtonRelease-1>", self.Agregar("gray15"))
self.Dibujos.tag_bind(self.BotonMarron, "<ButtonRelease-1>", self.Agregar("#502800"))
self.Dibujos.tag_bind(self.BotonRojo, "<ButtonRelease-1>", self.Agregar("red3"))
self.Dibujos.tag_bind(self.BotonNaranja, "<ButtonRelease-1>", self.Agregar("#fa6e00"))
self.Dibujos.tag_bind(self.BotonAmarillo, "<ButtonRelease-1>", self.Agregar("yellow3"))
self.Dibujos.tag_bind(self.BotonVerde, "<ButtonRelease-1>", self.Agregar("green4"))
self.Dibujos.tag_bind(self.BotonAzul, "<ButtonRelease-1>", self.Agregar("blue"))
self.Dibujos.tag_bind(self.BotonVioleta, "<ButtonRelease-1>", self.Agregar("#500a5a"))
self.Dibujos.tag_bind(self.BotonGris, "<ButtonRelease-1>", self.Agregar("gray45"))
self.Dibujos.tag_bind(self.BotonBlanco, "<ButtonRelease-1>", self.Agregar("gray88"))
self.Dibujos.tag_bind(self.BotonDorado, "<ButtonRelease-1>", self.Agregar("gold4"))
self.Dibujos.tag_bind(self.BotonPlateado, "<ButtonRelease-1>", self.Agregar("gray75"))
self.Dibujos.tag_bind(self.BotonBorrarBanda, "<ButtonRelease-1>", self.SacarUnaBanda)
self.Dibujos.tag_bind(self.LineaEnBotonBorrar, "<ButtonRelease-1>", self.SacarUnaBanda)
#Resultado del calculo en Ohmios:
self.BotonGenerarOhmios = Button(self.ventana, state="disable", text="Ohmios", bg="#a06e00", underline = 5, activebackground="gold3", command=self.GenerarOhmios)
self.BotonGenerarOhmios.place(x=150, y=105, width=100, height=20)
self.ValoresDeBandas = {"gray15":(0,1), "#502800":(1,10), "red3":(2,100), "#fa6e00":(3,1000), "yellow3":(4,10000),
"green4":(5,100000), "blue":(6,1000000), "#500a5a":(7,), "gray45":(8,), "gray88":(9,),
"gold4":(None,0.1), "gray75":(None,0.01)}
self.PlantillaResultado = LabelFrame(self.ventana, text="Resultado en Ohmios", bg="#fadca0", fg="red", relief="groove")
self.PlantillaResultado.place(x=20,y=205, width=360, height=70)
self.TextoResultado = Label(self.PlantillaResultado, bg="#fadca0", fg="blue4", font="system")
self.TextoResultado.place(x=10,y=20)
def MSGG():
showinfo("Autor", "Autor = Sokoleonardo 2011 - 2012")
self.BotonC = Button(self.ventana, text="(C)", bg="#a06e00", activebackground="gold3", command=MSGG)
self.BotonC.place(x=5,y=5)
def MSGIconError():
if exists(icon):
MSGERROR = getcwd()+"\\"+icon+" is corrupt"
else:
MSGERROR = getcwd()+"\\"+icon+" not exists"
showerror("Elechtronic resistor - warning", MSGERROR)
if ERROR_Ico:
self.ventana.after(1000,MSGIconError)
def GenerarOhmios(self):
"""Genera los resultados en Ohmios"""
BANDAS = []
for banda in self.BandasColores[:-1]:
color = self.Dibujos.itemcget(banda, "fill")
if color != "sienna":
BANDAS.append(color)
else: break
cifras = ""
for color in BANDAS[:-1]:
cifras += str(self.ValoresDeBandas[color][0])
OH = str(int(cifras) * self.ValoresDeBandas[BANDAS[-1]][1])
if int(float(OH)) > 999:
#Enconvierte un numero: 200000 en un numero 200.000
OH = list(OH)
OH.reverse()
Ohmios = ""
select = 0
for salto in range(len(OH)):
Ohmios += OH[salto] if not ( salto in range(3,40,3) ) else "."+OH[salto]
Ohmios = list(Ohmios); Ohmios.reverse()
Resultado = ""
for i in Ohmios:
Resultado += i
else:
Resultado = OH
self.TextoResultado["text"] = "Resultado en Ohmios: "+Resultado+"Ω"
def Chequeo(self):
"""Chequea el estado del boton: self.BotonGenerarOhmios dependiendo de condiciones."""
BANDAS = []
for banda in self.BandasColores[:-1]:
color = self.Dibujos.itemcget(banda, "fill")
if color != "sienna":
BANDAS.append(color)
else: break
estado = True
if len(BANDAS) < 2:
estado = False
elif BANDAS[0] in ("gray15","gold4", "gray75"):
estado = False
elif BANDAS[-1] in ("#500a5a", "gray45", "gray88"):
estado = False
else:
Multiplicador = []
for color in BANDAS[:-1]:
if color in ("gold4", "gray75"):
estado = False; break
self.BotonGenerarOhmios["state"] = "normal" if estado else "disable"
def SacarUnaBanda(self,*e):
"""Elimina una banda de color que el usuario coloco."""
BANDAS = self.BandasColores[:-1]
BANDAS.reverse()
for banda in BANDAS:
if self.Dibujos.itemcget(banda, "fill") != "sienna":
self.Dibujos.itemconfig(banda, fill="sienna")
break
self.Chequeo()
def AgregarColor(self, color):
"""Agrega colores, pero una funcion debe llamar a esta misma."""
for banda in self.BandasColores[:-1]:
if self.Dibujos.itemcget(banda, "fill") == "sienna":
self.Dibujos.itemconfig(banda, fill=color)
break
def Agregar(self, color):
"""Esta funcion le pasa el color a self.AgregarColor."""
def continuar(*e):
self.AgregarColor(color)
self.Chequeo()
return continuar
def BrillarColorBoton(self, boton, colorBrillo, colorNormal, nombre):
"""Cada vez que el mause se situa sobre un redondo el redondo brilla y aparece un mensaje en un texto
que nos muestra el nombre del color, cuando el mouse sale de arriba del redondo el redondo vuelve a la normalidad."""
def Brillar(*e):
self.Dibujos.itemconfig(boton, fill=colorBrillo)
self.Dibujos.itemconfig(self.TituloDeSeleccionado, text="Color: "+nombre)
self.Dibujos.tag_bind(boton, "<Enter>", Brillar)
def SacarBrillo(*e):
self.Dibujos.itemconfig(boton, fill=colorNormal)
self.Dibujos.itemconfig(self.TituloDeSeleccionado, text="")
self.Dibujos.tag_bind(boton, "<Leave>", SacarBrillo)
Body().ventana.mainloop()
Saludos!
Última edición por Sokoleonardo el Miér Dic 14, 2011 12:21 am, editado 2 veces (Razón : Imagen puesta)
Sokoleonardo- Moderador de Seccion
- Mensajes : 52
Nivel : 138
Reputación : 4
Fecha de inscripción : 04/08/2011
Vive en : Argentina
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.
Vie Sep 05, 2014 6:15 pm por JAVIER_77
» Hacker nostale
Vie Jul 20, 2012 5:02 pm por Sweet_Boy
» Chrome OS 20.x pasa al canal estable
Vie Jul 13, 2012 11:15 pm por [D]ement<<<
» Disponible openSUSE 12.2 RC 1
Vie Jul 13, 2012 12:44 am por [D]ement<<<
» NitroShare, comparte archivos y carpetas entre Linux y Windows
Vie Jul 13, 2012 12:26 am por [D]ement<<<
» Linux Mint 13 KDE Release Candidate, disponible
Vie Jul 13, 2012 12:18 am por [D]ement<<<
» LibreOffice 3.5.5, más estabilidad
Vie Jul 13, 2012 12:06 am por [D]ement<<<
» File History, un Time Machine para Windows 8
Miér Jul 11, 2012 9:50 pm por [D]ement<<<
» Como habilitar el logueo automático en Windows
Miér Jul 11, 2012 9:44 pm por [D]ement<<<
» Acronis True Image 2012
Mar Jul 10, 2012 12:15 am por [D]ement<<<
» Virus Informaticos
Mar Mayo 08, 2012 7:10 am por Sokoleonardo