problème réalisation tableau périodique tkinter

problème réalisation tableau périodique tkinter - Python - Programmation

Marsh Posté le 26-08-2010 à 15:50:04    

Bonjour,
 
Je dois réaliser ,de manière assez urgent, un tableau périodique sous tkinter avec une contrainte : le faire sous forme de liste.
Je parviens à faire fonctionner la fonction elem() qui me permet d'afficher les infos sur les différents éléments mais une fois que je dois passer au bouton ça se complique. Comme on ne peut pas employer de valeur avec la fonction command, je tente d'utiliser un lambda mais sans succès...
Une idée ?
voici mon code (je n'ai pas encore mis tous les éléments vu que le début ne fonctionne pas) :
 
# -*- coding: cp1252 -*-
from Tkinter import*
 
elements=[["Nom : Hydrogene","Numero atomique : 1", "Masse atomique : 1.00794", "Temperature de fusion(degre celcius) : -259.2", "Temperature ebullition (degre celcius): ---","Electronegativite : 2.20"],
          ["Nom : Helium", "Numero atomique : 2", "Masse atomique : 4.0026", "Temperature de fusion(degre celcius) : -272.2", "Temperature ebullition (degre celcius) : -268.93","Electronegativite : ---"]
          ]  
def elem(x):
    element=Tk()
    element.title("Proprietes" )
    listbox=Listbox(element,height=10,width=40,fg="#070942" )
    listbox.pack()
    listbox.insert(END)
    for item in elements[x]:
        listbox.insert(END,item)
    quitter = Button(element,text='Quitter',command=element.destroy)
    quitter.pack(side=BOTTOM)
    mainloop()
     
fen1=Tk()
fen1.title("Tableau periodique" )
 
ess=Button(fen1,text="KK" )
ess.grid(row=2,column=2)
 
bouH=Button(fen1,text='H',command=lambda x:elem(0),height=2,width=3,bg="white" )
bouH.grid(row=1,column=0)
 
bouHe=Button(fen1,text='He',command=lambda x:elem(),height=2,width=3,bg="white" )
bouHe.grid(row=1,column=17)
 
fen1.mainloop()
 
Merci d'avance !

Reply

Marsh Posté le 26-08-2010 à 15:50:04   

Reply

Marsh Posté le 27-08-2010 à 00:26:20    

Code :
  1. # -*- coding: cp1252 -*-
  2. from Tkinter import *
  3. elements = [
  4.             ["Nom : Hydrogene", "Numero atomique : 1", "Masse atomique : 1.00794", "Temperature de fusion(degre celcius) : -259.2", "Temperature ebullition (degre celcius): ---", "Electronegativite : 2.20"],
  5.             ["Nom : Helium", "Numero atomique : 2", "Masse atomique : 4.0026", "Temperature de fusion(degre celcius) : -272.2", "Temperature ebullition (degre celcius) : -268.93", "Electronegativite : ---"]
  6.            ]
  7. class Window(Tk):
  8.     def __init__(self, title):
  9.         Tk.__init__(self)
  10.         self.title(title)
  11.        
  12. class ElementButton:
  13.     def __init__(self, root, index, text, height, width, row, column, bg):
  14.         self.index = index
  15.         self.button = Button(root, text=text,command=self.elem, height=height, width=width, bg=bg)
  16.         self.button.grid(row=row, column=column)
  17.     def elem(self):
  18.         element = Window("Proprietes" )
  19.         listbox = Listbox(element, height=10, width=40, fg="#070942" )
  20.         for item in elements[self.index]:
  21.             listbox.insert(END, item)
  22.         listbox.pack()
  23.         quitter = Button(element, text='Quitter', command=element.destroy)
  24.         quitter.pack(side=BOTTOM)
  25.         element.mainloop()
  26. root = Window("Tableau periodique" )
  27. ess = Button(root, text="KK" )
  28. ess.grid(row=2, column=2)
  29. bouH = ElementButton(root, 0, 'H', 2, 3, 1, 0, 'white')
  30. bouHe = ElementButton(root, 1, 'He', 2, 3, 1, 17, 'white')
  31. root.mainloop()


 [:daaadou:1]

Spoiler :

Apprends à espacer ton code. Genre dans une affectation, tu colles pas "var=value" mais plutôt "var = value", sinon ça rend vite le code illisible. Idem pour les paramètres de fonction, idem pour tout.


Message édité par Christaline le 27-08-2010 à 01:14:30
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed