HACKERS ELITE
Bienvenido a HACKERS ELITE
porfavor registrate o inicia secion para ver todo el contenido del foro, disfruta tu visita!
Últimos temas
» Me bloquearon mi celular para conectarse a la Red Wifi en Modo Avion
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

Buscar
 
 

Resultados por:
 


Rechercher Búsqueda avanzada

Julio 2017
LunMarMiérJueVieSábDom
     12
3456789
10111213141516
17181920212223
24252627282930
31      

Calendario Calendario


[Tk] Elechtronic resistor 'bands

Ver el tema anterior Ver el tema siguiente Ir abajo

[Tk] Elechtronic resistor 'bands

Mensaje por Sokoleonardo el Dom Dic 11, 2011 10:12 pm

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]

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)
avatar
Sokoleonardo
Moderador de Seccion
Moderador de Seccion

Mensajes : 52
Nivel : 138
Reputación : 4
Fecha de inscripción : 04/08/2011
Vive en Vive en : Argentina

Volver arriba Ir abajo

Re: [Tk] Elechtronic resistor 'bands

Mensaje por [D]ement<<< el Lun Dic 12, 2011 7:41 am

felizitaciones soko muy bn excelente aporte muy bueno

salu2

☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼
[Tienes que estar registrado y conectado para ver esa imagen]
Spoiler:
[Tienes que estar registrado y conectado para ver esa imagen][Tienes que estar registrado y conectado para ver esa imagen][Tienes que estar registrado y conectado para ver esa imagen]
avatar
[D]ement<<<
01000011 01101111 01100100 01100101 01110010
01000011 01101111 01100100 01100101 01110010

Mensajes : 358
Nivel : 682
Reputación : 13
Fecha de inscripción : 28/01/2011
Vive en Vive en : PUERTO RICO

http://elite.foroactivo.mx

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.