Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CONVERTISSEUR DECIMAL-BINAIRE-HEXADECIMAL (INTERFACE TKINTER)


Description

Cliquez pour voir la capture en taille normale
Ce programme permet comme son nom l'indique de convertir des nombres (entiers) entre ces 3 bases. Toujours utilise pour vérifier les calculs faits "à la main" pour réviser les cours ^^. Petit programme sans prétention fait en 3/4 d'heure.
 

Source

  • ##############################
  • # Convertisseur Multi-bases #
  • # par Drvolodimtank #
  • ##############################
  • #### Importation des modules ####
  • from Tkinter import *
  • #################################
  • #### Fonctions de conversion ####
  • #################################
  • listehexa=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"]
  • listebinaire=["0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"]
  • def binairedecimal(string):
  • x=len(string)-1
  • n=0
  • res=0
  • while x!=-1:
  • if string[x]=="1":
  • res=res+2**n
  • n=n+1
  • x=x-1
  • return res
  • def decimalbinaire(string):
  • quotient=int(string)
  • liste=[]
  • res=""
  • while quotient!=1:
  • liste=liste+[quotient%2]
  • quotient=quotient/2
  • liste=liste+[1]
  • while liste!=[]:
  • res=res+str(liste[-1])
  • liste=liste[:-1]
  • return res
  • def binairehexa(string):
  • liste=[]
  • res=""
  • while len(string)>4:
  • liste=liste+[string[-4:]]
  • string=string[:-4]
  • liste=liste+[string]
  • while len(liste[-1])!=4:
  • liste[-1]="0"+liste[-1]
  • for x in range(len(liste)):
  • i=listebinaire.index(liste[x])
  • liste[x]=listehexa[i]
  • while liste!=[]:
  • res=res+liste[-1]
  • liste=liste[:-1]
  • return res
  • def hexabinaire(string):
  • res=""
  • for x in range(len(string)):
  • i=listehexa.index(string[x])
  • res=res+listebinaire[i]
  • return res
  • def decimalhexa(string):
  • return binairehexa(decimalbinaire(string))
  • def hexadecimal(string):
  • return binairedecimal(hexabinaire(string))
  • #############################
  • #### Interface graphique ####
  • #############################
  • def convertir():
  • saisie=Esaisie.get()
  • x,y=basedepart.get(),basearrivee.get()
  • couple=(x,y)
  • if couple==(1,2):
  • res=decimalbinaire(saisie)
  • elif couple==(1,3):
  • res=decimalhexa(saisie)
  • elif couple==(2,1):
  • res=binairedecimal(saisie)
  • elif couple==(2,3):
  • res=binairehexa(saisie)
  • elif couple==(3,1):
  • res=hexadecimal(saisie)
  • elif couple==(3,2):
  • res=hexabinaire(saisie)
  • else :
  • res="Euh..... B00lay ??"
  • fen2=Toplevel()
  • Label(fen2,text="Resultat").pack()
  • Label(fen2,text=res).pack()
  • fen2.mainloop()
  • fen=Tk()
  • fen.title("Convertisseur Multi-Bases")
  • Label(fen,text="Saisissez la valeur\na convertir").pack(side=TOP)
  • Esaisie=Entry(fen)
  • Esaisie.pack(side=TOP)
  • Fgauche=Frame(fen)
  • Fgauche.pack(side=LEFT)
  • Label(Fgauche,text="Base de depart").pack()
  • basedepart=IntVar()
  • Radiobutton(Fgauche,text="Decimal",variable=basedepart,value=1,indicatoron=0,width=15).pack()
  • Radiobutton(Fgauche,text="Binaire",variable=basedepart,value=2,indicatoron=0,width=15).pack()
  • Radiobutton(Fgauche,text="Hexadecimal",variable=basedepart,value=3,indicatoron=0,width=15).pack()
  • Fdroite=Frame(fen)
  • Fdroite.pack(side=RIGHT)
  • Label(Fdroite,text="Base d'arrivee").pack()
  • basearrivee=IntVar()
  • Radiobutton(Fdroite,text="Decimal",variable=basearrivee,value=1,indicatoron=0,width=15).pack()
  • Radiobutton(Fdroite,text="Binaire",variable=basearrivee,value=2,indicatoron=0,width=15).pack()
  • Radiobutton(Fdroite,text="Hexadecimal",variable=basearrivee,value=3,indicatoron=0,width=15).pack()
  • Bconvertir=Button(fen,text="Convertir",command=convertir)
  • Bconvertir.pack(side=BOTTOM)
  • fen.mainloop()
##############################
# Convertisseur Multi-bases  #
# par Drvolodimtank          #
##############################

#### Importation des modules ####
from Tkinter import *



#################################
#### Fonctions de conversion ####
#################################
listehexa=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"]
listebinaire=["0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"]


def binairedecimal(string):
    x=len(string)-1
    n=0
    res=0
    while x!=-1:
        if string[x]=="1":
            res=res+2**n
        n=n+1
        x=x-1
    return res

def decimalbinaire(string):
    quotient=int(string)
    liste=[]
    res=""
    while quotient!=1:
        liste=liste+[quotient%2]
        quotient=quotient/2
    liste=liste+[1]
    while liste!=[]:
        res=res+str(liste[-1])
        liste=liste[:-1]
    return res

def binairehexa(string):
    liste=[]
    res=""
    while len(string)>4:
        liste=liste+[string[-4:]]
        string=string[:-4]
    liste=liste+[string]
    while len(liste[-1])!=4:
        liste[-1]="0"+liste[-1]
    for x in range(len(liste)):
        i=listebinaire.index(liste[x])
        liste[x]=listehexa[i]
    while liste!=[]:
        res=res+liste[-1]
        liste=liste[:-1]
    return res

def hexabinaire(string):
    res=""
    for x in range(len(string)):
        i=listehexa.index(string[x])
        res=res+listebinaire[i]
    return res

def decimalhexa(string):
    return binairehexa(decimalbinaire(string))

def hexadecimal(string):
    return binairedecimal(hexabinaire(string))

#############################
#### Interface graphique ####
#############################

def convertir():
    saisie=Esaisie.get()
    x,y=basedepart.get(),basearrivee.get()
    couple=(x,y)
    if couple==(1,2):
        res=decimalbinaire(saisie)
    elif couple==(1,3):
        res=decimalhexa(saisie)
    elif couple==(2,1):
        res=binairedecimal(saisie)
    elif couple==(2,3):
        res=binairehexa(saisie)
    elif couple==(3,1):
        res=hexadecimal(saisie)
    elif couple==(3,2):
        res=hexabinaire(saisie)
    else :
        res="Euh..... B00lay ??"
    fen2=Toplevel()
    Label(fen2,text="Resultat").pack()
    Label(fen2,text=res).pack()
    fen2.mainloop()


fen=Tk()
fen.title("Convertisseur Multi-Bases")
Label(fen,text="Saisissez la valeur\na convertir").pack(side=TOP)
Esaisie=Entry(fen)
Esaisie.pack(side=TOP)

Fgauche=Frame(fen)
Fgauche.pack(side=LEFT)
Label(Fgauche,text="Base de depart").pack()
basedepart=IntVar()
Radiobutton(Fgauche,text="Decimal",variable=basedepart,value=1,indicatoron=0,width=15).pack()
Radiobutton(Fgauche,text="Binaire",variable=basedepart,value=2,indicatoron=0,width=15).pack()
Radiobutton(Fgauche,text="Hexadecimal",variable=basedepart,value=3,indicatoron=0,width=15).pack()


Fdroite=Frame(fen)
Fdroite.pack(side=RIGHT)
Label(Fdroite,text="Base d'arrivee").pack()
basearrivee=IntVar()
Radiobutton(Fdroite,text="Decimal",variable=basearrivee,value=1,indicatoron=0,width=15).pack()
Radiobutton(Fdroite,text="Binaire",variable=basearrivee,value=2,indicatoron=0,width=15).pack()
Radiobutton(Fdroite,text="Hexadecimal",variable=basearrivee,value=3,indicatoron=0,width=15).pack()

Bconvertir=Button(fen,text="Convertir",command=convertir)
Bconvertir.pack(side=BOTTOM)

fen.mainloop()
            

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de killer_sam le 14/06/2007 18:50:59

Bonjour,

Pas mal comme petite application. Si je peux me permettre, je propose un bouton supplémentaire pour quitter.

CODE :

Radiobutton(Fdroite,text="Decimal",variable=basearrivee,value=1,indicatoron=0,width=15).pack()
Radiobutton(Fdroite,text="Binaire",variable=basearrivee,value=2,indicatoron=0,width=15).pack()
Radiobutton(Fdroite,text="Hexadecimal",variable=basearrivee,value=3,indicatoron=0,width=15).pack()

Bconvertir=Button(fen,text="Convertir",command=convertir)
Bconvertir.pack(side=BOTTOM)

Bexit=Button(fen,text='EXIT',fg ='red',command=fen.quit)  # ligne ajoutée
Bexit.pack(side=BOTTOM)                                   # ligne ajoutée

fen.mainloop()

Le bouton se place juste au dessus de "Convertir" et la police est en rouge (fg='red').
Tant que tu es sous IDLE il ne faut pas tuer à chaque fois le shell.

killer_sam

signaler à un administrateur
Commentaire de drvolodimtank le 15/06/2007 09:33:10

Le bouton quitter n'a pas été ajouté volontairement car lorsque l'application est lancée par doublie clique sur le fichier .py (sous windows) un clique sur la croix de fermeture quitte tout normalement.
Mais effectivement on peut rajouter simplement un bouton ;).

signaler à un administrateur
Commentaire de Epsilon012 le 12/07/2007 18:38:12

Quand je lui demande de convertir 0 il bug et utilise 90% du CPU :p
J'avoue c'est con de lui demandé ca mais bon je le teste ^^ :)

signaler à un administrateur
Commentaire de drvolodimtank le 13/07/2007 09:56:31

Effectivement Epsilon012 je n'ai pas testé rigoureusement mon programme. Par contre 90% de CPU c'est un petit CPU que tu as ^^ il ne me prend que 5 10 % quand il bug !

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

utilisation de librairie binaire(dll sous windows et sous linux) [ par kollibar ] comment je peut faire pour créer une dll (en C ou C++ ) et utiliser ses fonctions  en python. je sais qu'il y a des contraintes sur l'é Comment creer un convertisseur de fichier? [ par djisse95 ] Bonjour a tous! Je voudrais juste savoir comment faire, quelle est la demarche a faire pour changer d'extension un fichier avec python.En effet  je vo


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,452 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.