# Chargement du module tkinter
from tkinter import * # pour Python2 ce serait Tkinter


######Chiffres significatifs

cs = 3 #indiquer ici le nombre de chiffres significatifs à utiliser pour l'affichage dans le tableau
cs = cs = "#." + str(cs) + "g" #permet d'afficher les nombre avec le bon nombre de chiffres significatifs dans le tableau, avec l'instruction format(nombre, cs)

######Réactif 1

#concentration de la solution 1 (diiode ou autre si une autre réaction) en mol/L
C1 = 0.1
#Volume de la solution 1 (diiode ou autre si une autre réaction) utilisée en mL
V1 = 20

######Réactif 2

#concentration  de la solution 2 (thiosulfate de sodium ou autre si une autre réaction) en mol/L
C2 = 0.1
#Volume de la solution 2 (thiosulfate de sodium ou autre si une autre réaction) utilisée en mL
V2 = 20

######Quantités initiales

n1i = ... #A FAIRE : compléter par la formule permettant de calculer la quantite initiale de I2  rq : si la concentration est en mol/L et le volume en mL, la quantité de matière sera en mmol
n2i =... #A FAIRE : compléter par la formule permettant de calculer la quantite initiale de S2O32-
n3i = 0
n4i = 0

######Avancement maximal
xmax = min (...,...) #A FAIRE : compléter par la formule permettant de calculer la quantite initiale de I2  rq : si la concentration est en mol/L et le volume en mL, la quantité de matière sera en mmol

######Quantités finales
n1f = ... #A FAIRE : compléter par la formule permettant de calculer la quantite finale de I2  en fonction de n1i et xmax
n2f =...  #A FAIRE : compléter par la formule permettant de calculer la quantite finale de S2O32-  en fonction de n2i et xmax
n3f = ...  #A FAIRE : compléter par la formule permettant de calculer la quantite finale de I-  en fonction de n3i et xmax
n4f = ... #A FAIRE : compléter par la formule permettant de calculer la quantite finale de S4O62-  en fonction de n4i et xmax


###### Tracé du tableau
# Construction de la fenêtre principale «root»
root = Tk()
root.title('''Tableau d'avancement''')




#première ligne
Label(root, text='Equation de réaction',bd = 1,relief = 'solid').grid(row=0, column=0, columnspan=2,sticky='nesw' )
equation = Frame(root,bd = 1,relief = 'solid')
equation.grid(row=0, column=2,sticky='nesw')
equation.columnconfigure(0, minsize =100)
equation.columnconfigure(1, minsize =20)
equation.columnconfigure(2, minsize =100)
equation.columnconfigure(3, minsize =20)
equation.columnconfigure(4, minsize =100)
equation.columnconfigure(5, minsize =20)
equation.columnconfigure(6, minsize =100)



Label(equation, text='I\u2082').grid(row=0, column=0 )#I2
Label(equation, text='+').grid(row=0, column=1) #+
Label(equation, text='2 S\u2082O\u2083 \u00B2\u207B').grid(row=0, column=2 )#S2O3 2- 
Label(equation, text='\u2192').grid(row=0, column=3 )#flèche
Label(equation, text='2 I\u207B').grid(row=0, column=4)# I-
Label(equation, text='+').grid(row=0, column=5) #+
Label(equation, text='S\u2084O\u2086 \u00B2\u207B').grid(row=0, column=6 )#produit 2


#deuxième ligne
Label(root, text='Etat du système',bd = 1,relief = 'solid').grid(row=1, column=0,sticky='nesw' )
Label(root, text='Avancement en mmol',bd = 1,relief = 'solid').grid(row=1, column=1, sticky='nesw')
Label(root, text='Quantité de matière en mmol',bd = 1,relief = 'solid').grid(row=1, column=2, columnspan=7,sticky='nesw' )

##########ETAT INITIAL######
#troisiéme ligne 
Label(root, text='Etat initial',bd = 1,relief = 'solid').grid(row=2, column=0, sticky='nesw' )
Label(root, text='x = 0',bd = 1,relief = 'solid',).grid(row=2, column=1,sticky='nesw' )
qdmInitial = Frame(root)
qdmInitial.grid(row=2, column=2,sticky='nesw')
#pour poistionner correctement les 4 colonnes des quantités de matière
qdmInitial.columnconfigure(0, minsize =110)
qdmInitial.columnconfigure(1, minsize =120)
qdmInitial.columnconfigure(2, minsize =120)
qdmInitial.columnconfigure(3, minsize =110)
#Remplissage des colonnes : quantités de matière à l'état initial
Label(qdmInitial, text=format(n1i, cs),bd = 1,relief = 'solid').grid(row=0, column=0, sticky='nesw' )#réactif 1
Label(qdmInitial, text=format(n2i, cs),bd = 1,relief = 'solid').grid(row=0, column=1, sticky='nesw' )#réactif 2
Label(qdmInitial, text=format(n3i, cs),bd = 1,relief = 'solid').grid(row=0, column=2, sticky='nesw' )#produit 1
Label(qdmInitial, text=format(n4i, cs),bd = 1,relief = 'solid').grid(row=0, column=3 , sticky='nesw')#produit 2

##########EN COURS DE TRANSFORMATION######

#quatrième ligne 
Label(root, text='En cours de transformation',bd = 1,relief = 'solid').grid(row=3, column=0, sticky='nesw')
Label(root, text='x < xmax',bd = 1,relief = 'solid').grid(row=3, column=1, sticky='nesw')
qdmEncours = Frame(root)
qdmEncours.grid(row=3, column=2,sticky='nesw')
#pour poistionner correctement les 4 colonnes  des quantités de matière
qdmEncours.columnconfigure(0, minsize =110)
qdmEncours.columnconfigure(1, minsize =120)
qdmEncours.columnconfigure(2, minsize =120)
qdmEncours.columnconfigure(3, minsize =110)
#Remplissage des colonnes : quantités de matière en cours de transformation
Label(qdmEncours, text=format(n1i, cs)+" - x",bd = 1,relief = 'solid').grid(row=0, column=0, sticky='nesw' )#réactif 1
Label(qdmEncours, text=format(n1i, cs)+" - 2 x",bd = 1,relief = 'solid').grid(row=0, column=1, sticky='nesw' )#réactif 2
Label(qdmEncours, text="2 x",bd = 1,relief = 'solid').grid(row=0, column=2, sticky='nesw' )#produit 1
Label(qdmEncours, text="x",bd = 1,relief = 'solid').grid(row=0, column=3, sticky='nesw' )#produit 2


##########ETAT FINAL######
#cinquième ligne
Label(root, text='Etat final',bd = 1,relief = 'solid').grid(row=4, column=0, sticky='nesw' )
Label(root, text='x = xmax = '+ str(xmax),bd = 1,relief = 'solid').grid(row=4, column=1, sticky='nesw')
qdmFinal = Frame(root)
qdmFinal.grid(row=4, column=2,sticky='nesw')
#pour poistionner correctement les 4 colonnes  des quantités de matière
qdmFinal.columnconfigure(0, minsize =110)
qdmFinal.columnconfigure(1, minsize =120)
qdmFinal.columnconfigure(2, minsize =120)
qdmFinal.columnconfigure(3, minsize =110)
#Remplissage des colonnes : quantités de matière à l'état final
Label(qdmFinal, text=format(n1f, cs),bd = 1,relief = 'solid').grid(row=0, column=0, sticky='nesw' )#réactif 1
Label(qdmFinal, text=format(n2f, cs),bd = 1,relief = 'solid').grid(row=0, column=1, sticky='nesw' )#réactif 2
Label(qdmFinal, text=format(n3f, cs),bd = 1,relief = 'solid').grid(row=0, column=2, sticky='nesw' )#produit 1
Label(qdmFinal, text=format(n4f, cs),bd = 1,relief = 'solid').grid(row=0, column=3, sticky='nesw' )#produit 2



# Lancement de la «boucle principale»
root.mainloop()
