from tkinter import *

fenetre=Tk()

def baseDecimal(nBase,Base):
    nDec=0
    puisBase=1
    while nBase!=0:
        c=nBase%10
        nDec=nDec+c*puisBase
        nBase=(nBase-c)//10
        puisBase=Base*puisBase
    return nDec

def decimalBase (nDec, Base):
    nBase=0
    puis10=1
    while nDec!=0:
        c=nDec%Base
        nBase=nBase+c*puis10
        puis10=puis10*10
        nDec=nDec//Base
    return nBase

def decimal():
    nentry=nEntry.get()
    if nentry.count("0")+nentry.count("1")==len(nentry):
        nBase=int(nentry)
        Base=2
        nDec=baseDecimal(nBase,Base)
        lSortie.config(text=str(nDec))
    else:
        lSortie.config(text='Veuillez entrer un nombre binaire.')
    fenetre.pack_propagate(1)
        
def binaire():
    nentry=nEntry.get()
    if nentry.isdecimal():
       nDec=int(nentry)
       Base=2
       nBase=decimalBase (nDec,Base)
       lSortie.config(text=str(nBase))
    

fenetre.title("Convesion")
fenetre.configure(bg='blue',width=260,height=150)
fenetre.pack_propagate(0)
fenetre.resizable(width=TRUE, height=TRUE)

lNombre=Label(fenetre,text="Nombre :",bg='blue')
lNombre.grid(column=0,row=0)

nEntry=Entry(fenetre,width=6)
nEntry.grid(column=0,row=1)
nEntry.bind("<Up>", lambda evt:decimal())
nEntry.bind("<Down>", lambda evt:binaire())
nEntry.bind("<Escape>",lambda evt:fenetre.destroy())
nEntry.focus_set()

decButton=Button(fenetre, text="Bin->Dec",bg="blue",command=decimal)
decButton.grid(column=0,row=2)

binButton=Button(fenetre, text="Dec->Bin",bg="blue",command=binaire)
binButton.grid(column=0,row=3)

lResultat=Label(text="Résultat :",bg="blue")
lResultat.grid(column=1,row=0)
                   
lSortie=Label(fenetre,text="",bg='blue')
lSortie.grid(column=1,row=1)

Quitter=Button(command=fenetre.destroy,text="Quitter",bg="blue")
Quitter.grid(column=0,row=4,columnspan=2)

fenetre.mainloop()
                   

                   




    
