Tableau périodique

FIXME : importation de la librairie tkinter à unifier + codes à améliorer

tableau_periodique.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Programme sur le tableau périodique
# MJ, Ba2 chimie 2010-2011
 
from tkinter import *
from element_liste import * #sert à importer la liste présente dans l'autre fichier
 
#création de la commande générale du boutton
def elem(x):
    element=Tk()
    element.title("Proprietes")
    listbox=Listbox(element,height=10,width=40,fg="#070942")
    listbox.pack() #sert à ajuster la fenêtre
    listbox.insert(END)
    for item in tableau[x]:
        listbox.insert(END,item)
    quitter = Button(element,text='Quitter',command=element.destroy)
    quitter.pack(side=BOTTOM)
    mainloop()
 
fen1=Tk()
fen1.title("Tableau periodique")
 
#création de la légende (site www.jchr.be/python/tkinter.htm)
import tkinter
sysdemenu=tkinter.Menu(fen1)
def legende():
    legend1= Tk()
    legend1.title("Légende")
    frame= Frame(legend1, height=200, width= 300) #frame ouvre une nouvelle fenêtre dans laquelle on peut insérer plusieurs widgets (ici des messages)
    autre = Message(legend1, text="Autres", width=300, font="Arial 15", bg="white") #font = taille et police
    autre.pack()
    metauxtransition= Message(legend1, text="Metaux de transition", width=300, font="Arial 15", bg="#FFCCCC")
    metauxtransition.pack()
    gazrare = Message(legend1, text="Gaz rares", width=300, font="Arial 15", bg="#00CCFF")
    gazrare.pack()
    nonmetaux= Message(legend1, text="Non metaux", width=300, font="Arial 15", bg="#00FF66")
    nonmetaux.pack()
    metauxalcalins= Message(legend1, text="Metaux alcalins", width=300, font="Arial 15", bg="#FF9900")
    metauxalcalins.pack()
    metauxalcalinoterreux= Message(legend1, text="Metaux alcalino terreux", width=300, font="Arial 15", bg="#FFFF33")
    metauxalcalinoterreux.pack()
    lanthanides= Message(legend1, text="Lanthanides", width=300, font="Arial 15", bg="#CCCC66")
    lanthanides.pack()
    actinides= Message(legend1, text="Actinides", width=300, font="Arial 15", bg="#FF3300")
    actinides.pack()
    metaux= Message(legend1, text="Metaux", width=300, font="Arial 15", bg="#9999FF")
    metaux.pack()
 
    frame.pack()
    mainloop() 
 
Menu=tkinter.Menu(sysdemenu)
sysdemenu.add_cascade(label="Menu", menu=Menu)
Menu.add_command(label="Legende", command = legende)
Menu.add_command(label="Quitter", command=fen1.quit)
 
#création des boutons du tableau
bou_list=[]
for item in tableau[1:]:
   bou=Button(fen1,text=item[1],command=lambda x=item[2]:elem(x),height=2,width=3,bg=item[6])
   bou.grid(row=item[4],column=item[5]) #grid est utilisé pour classer les bouttons par rangée et colonne
   bou_list.append(bou)
 
fen1.config(menu=sysdemenu)
 
#création de la listbox au sommet (source:http://www.tkdocs.com/tutorial/grid.html)   
centre=Listbox(fen1)
centre.grid(row=0,column=3,rowspan= 1,columnspan=8)
centre.insert(END)
for item in ["Nom:","Symbole:", "Numero atomique:","Masse molaire:","Ligne:","Colonne:","Couleur:"]:
    centre.insert(END,item)
mainloop()
 
fen1.destroy()   
fen1.mainloop()

Nécessite ce fichier de données :

element_liste.py
tableau=[
        ["Nom","symbole","Numero atomique","Masse atomique", "ligne","colonne","couleur"],
        ["Hydrogene","H",1, 1.00794,1,0,"white"],
        ["Helium", "He",2, 4.0026,1,17,"#00CCFF"],
        ["Lithium", "Li", 3, 6.9412,2,0,"#FF9900"],
        ["Beryllium","Be",4,9.012182,2,1,"#FFFF33"],
        ["Bore","B",5,10.811,2,12,"#00FF66"],
        ["Carbone","C",6,12.0107,2,13,"#00FF66"],
        ["Azote","N",7,14.00674,2,14,"#00FF66"],
        ["Oxygene","O",8,15.9994,2,15,"#00FF66"],
        ["Fluor","F",9,18.9984,2,16,"#00FF66"],
        ["Neon","Ne",10,20.1797,2,17,"#00CCFF"],
        ["Sodium","Na",11,22.9897,3,0,"#FF9900"],
        ["Magnesium","Mg",12,24.3050,3,1,"#FFFF33"],
        ["Aluminium","Al",13,26.9815,3,12,"#9999FF"],
        ["Silicium","Si",14,28.0855,3,13,"#00FF66"],
        ["Phosphore","P",15,30.973761,3,14,"#00FF66"],
        ["Soufre","S",16,32.066,3,15,"#00FF66"],
        ["Chlore","Cl",17,35.453,3,16,"#00FF66"],
        ["Argon","Ar",18,39.948,3,17,"#00CCFF"],
        ["Potassium","K",19,39.0963,4,0,"#FF9900"],
        ["Calcium","Ca",20,40.078,4,1,"#FFFF33"],
        ["Scandium","Sc",21,44.9559,4,2,"#FFCCCC"],
        ["Titane","Ti",22,47.867,4,3,"#FFCCCC"],
        ["Vanadium","V",23,50.9415,4,4,"#FFCCCC"],
        ["Chrome","Cr",24,51.9961,4,5,"#FFCCCC"],
        ["Manganese","Mn",25,54.9380,4,6,"#FFCCCC"],
        ["Fer","Fe",26,55.8457,4,7,"#FFCCCC"],
        ["Cobalt","Co",27,58.9332,4,8,"#FFCCCC"],
        ["Nickel","Ni",28,58.6934,4,9,"#FFCCCC"],
        ["Cuivre","Cu",29,63.546,4,10,"#FFCCCC"],
        ["Zinc","Zn",30,65.409,4,11,"#FFCCCC"],
        ["Gallium","Ga",31,69.723,4,12,"#9999FF"],
        ["Germanium","Ge",32,72.64,4,13,"#9999FF"],
        ["Arsenic","As",33,74.9216,4,14,"#00FF66"],
        ["Selenium","Se",34,78.96,4,15,"#00FF66"],
        ["Brome","Br",35,79.904,4,16,"#00FF66"],
        ["Krypton","Kr",36,83.798,4,17,"#00CCFF"],
        ["Rubidium","Rb",37,85.4678,5,0,"#FF9900"],
        ["Strontium","Sr",38,87.62,5,1,"#FFFF33"],
        ["Yttrium","Y",39,88.9059,5,2,"#FFCCCC"],
        ["Zirconium","Zr",40,91.224,5,3,"#FFCCCC"],
        ["Niobium","Nb",41,92.9063,5,4,"#FFCCCC"],
        ["Molybdene","Mo",42,95.94,5,5,"#FFCCCC"],
        ["Technetium","Tc",43,98,5,6,"#FFCCCC"],
        ["Ruthenium","Ru",44,101.07,5,7,"#FFCCCC"],
        ["Rhodium","Rh",45,102.9055,5,8,"#FFCCCC"],
        ["Palladium","Pd",46,106.42,5,9,"#FFCCCC"],
        ["Argent","Ag",47,107.8682,5,10,"#FFCCCC"],
        ["Cadmium","Cd",48,112.411,5,11,"#FFCCCC"],
        ["Indium","In",49,114.818,5,12,"#9999FF"],
        ["Etain","Sn",50,118.710,5,13,"#9999FF"],
        ["Antimoine","Sb",51,121.760,5,14,"#9999FF"],
        ["Tellure","Te",52,127.60,5,15,"#00FF66"],
        ["Iode","I",53,126.9045,5,16,"#00FF66"],
        ["Xenon","Xe",54,131.293,5,17,"#00CCFF"],
        ["Cesium","Cs",55,132.9054,6,0,"#FF9900"],
        ["Baryum","Ba",56,137.327,6,1,"#FFFF33"],
        ["Lanthane","La",57,138.9055,6,2,"#FFCCCC"],
        ["Cerium","Ce",58,140.116,8,4,"#CCCC66"],
        ["Praseodyme","Pr",59,140.9076,8,5,"#CCCC66"],
        ["Neodyme","Nd",60,144.24,8,6,"#CCCC66"],
        ["Promethium","Pm",61,145,8,7,"#CCCC66"],
        ["Samarium","Sm",62,150.36,8,8,"#CCCC66"],
        ["Europium","Eu",63,151.964,8,9,"#CCCC66"],
        ["Gadolinium","Gd",64,157.25,8,10,"#CCCC66"],
        ["Terbium","Tb",65,158.9253,8,11,"#CCCC66"],
        ["Dysprosium","Dy",66,162.500,8,12,"#CCCC66"],
        ["Holmium","Ho",67,164.9303,8,13,"#CCCC66"],
        ["Erbium","Er",68,167.259,8,14,"#CCCC66"],
        ["Thulium","Tm",69,168.9342,8,15,"#CCCC66"],
        ["Ytterbium","Yb",70,173.04,8,16,"#CCCC66"],
        ["Lutecium","Lu",71,174.967,8,17,"#CCCC66"],
        ["Hafnium","Hf",72,178.49,6,3,"#FFCCCC"],
        ["Tantale","Ta",73,180.9479,6,4,"#FFCCCC"],
        ["Tungstene","W",74,183.84,6,5,"#FFCCCC"],
        ["Rhenium","Re",75,186.207,6,6,"#FFCCCC"],
        ["Osmium","Os",76,190.23,6,7,"#FFCCCC"],
        ["Iridium","Ir",77,192.217,6,8,"#FFCCCC"],
        ["Platine","Pt",78,195.078,6,9,"#FFCCCC"],
        ["Or","Au",79,166.9665,6,10,"#FFCCCC"],
        ["Mercure","Hg",80,200.59,6,11,"#FFCCCC"],
        ["Thallium","Tl",81,204.3833,6,12,"#9999FF"],
        ["Plomb","Pb",82,207.2,6,13,"#9999FF"],
        ["Bismuth","Bi",83,208.9803,6,14,"#9999FF"],
        ["Polonium","Po",84,209,6,15,"#9999FF"],
        ["Astate","At",85,210,6,16,"#00FF66"],
        ["Radon","Rd",86,222,6,17,"#00CCFF"],
        ["Francium","Fr",87,223,7,0,"#FF9900"],
        ["Radium","Ra",88,226,7,1,"#FFFF33"],
        ["Actinium","Ac",89,227,7,2,"#FFCCCC"],
        ["Thorium","Th",90,232.0381,9,4,"#FF3300"],
        ["Protactinium","Pa",91,231.0359,9,5,"#FF3300"],
        ["Uranium","U",92,238.02891,9,6,"#FF3300"],
        ["Neptunium","Np",93,237,9,7,"#FF3300"],
        ["Plutonium","Pu",94,244,9,8,"#FF3300"],
        ["Americium","Am",95,243,9,9,"#FF3300"],
        ["Curium","Cm",96,247,9,10,"#FF3300"],
        ["Berkelium","Bk",97,247,9,11,"#FF3300"],
        ["Californium","Cf",98,251,9,12,"#FF3300"],
        ["Einsteinium","Es",99,252,9,13,"#FF3300"],
        ["Fermium","Fm",100,257,9,14,"#FF3300"],
        ["Mendelevium","Md",101,258,9,15,"#FF3300"],
        ["Nobelium","No",102,259,9,16,"#FF3300"],
        ["Lawrencium","Lr",103,262,9,17,"#FF3300"],
        ["Rutherfordium","Rf",104,261,7,3,"#FFCCCC"],
        ["Dubnium","Db",105,262,7,4,"#FFCCCC"],
        ["Seaborgium","Sg",106,266,7,5,"#FFCCCC"],
        ["Bohrium","Bh",107,264,7,6,"#FFCCCC"],
        ["Hassium","Hs",108,269,7,7,"#FFCCCC"],
        ["Meitneium","Mt",109,268,7,8,"#FFCCCC"],
        ["Darmstadtium","Ds",110,271,7,9,"#FFCCCC"],
        ["Roentgenium","Rg",111,272,7,10,"#FFCCCC"],
        ["Copernicium","Cn",112,285,7,11,"#FFCCCC"],
        ["Ununtrium","Uut",113,184,7,12,"#9999FF"],
        ["Ununquadium","Uuq",114,289,7,13,"#9999FF"],
        ["Ununpentium","Uup",115,288,7,14,"#9999FF"],
        ["Ununhexium","Uuh",116,292,7,15,"#9999FF"],
        ["Ununseptium","Uus",117,"-",7,16,"white"],
        ["Ununoctium","Uuo",118,"-",7,17,"white"]
        ]