mon script foire je comprend pas pourquoi

mon script foire je comprend pas pourquoi - Python - Programmation

Marsh Posté le 11-03-2009 à 18:08:02    

Bonjour à tous,
 
je suis débutant sur python et je dois faire un programme avec interface graphique pour mon stage.
 
Je suis bloqué sur la capture de texte avec la librairie Tkinter
La commande get() pour recevoir le texte inscrit dans un widget EntryField (de Pmw) ne veux pas fonctionner dans le cas de mon programme.
J'ai comparé avec un programme semblable trouvé dans le tuto de Gérard Swinen qui tourne comme il faut mais je ne vois nulle part où je foire.
 
Voici le code :

Code :
  1. # -*- coding:Utf-8 -*-
  2. from Tkinter import *
  3. from math import *
  4. import Pmw
  5. class fenetre(Frame):
  6.     def __init__(self):
  7.         Frame.__init__(self)
  8.         #création des onglets
  9.         notebook=Pmw.NoteBook(parent=Frame.__init__(self))
  10.         notebook.pack(fill = 'both', expand = 1, padx = 10, pady = 10)
  11.         onglet1=notebook.add('Visualisation')
  12.         notebook.tab('Visualisation').focus_set()
  13.         Label(onglet1,text='entrée :').grid(row=0,column=0,padx=3,pady=3)
  14. ##        self.valentre=Entry(onglet1).grid(row=0,column=1,padx=3,pady=3)
  15. ##        Button(onglet1,text='valider',command=self.maj).grid(row=0,column=2,padx=3,pady=3)
  16.         self.valentre=Pmw.EntryField(onglet1,labelpos='e',command=self.maj, label_text='°C').grid(row=0,column=1,padx=3,pady=3)
  17.     def maj(self):
  18.         entre=self.valentre.get()
  19.         Label(onglet1, text=entre).grid(row=1,column=0,adx=3,pady=3,columnspan=2)
  20.         print entre
  21.    
  22. if __name__ == '__main__':
  23.     fenetre().mainloop()


 
lors de l'éxecution j'ai ce message d'erreur :  
 

Code :
  1. File "/usr/lib/python2.5/lib-tk/Tkinter.py", line 1417, in __call__
  2.     return self.func(*args)
  3.   File "/usr/lib/python2.5/site-packages/Pmw/Pmw_1_3/lib/PmwEntryField.py", line 191, in _executeCommand
  4.     cmd()
  5.   File "test.py", line 20, in maj
  6.     entre=self.valentre.get()
  7. AttributeError: 'NoneType' object has no attribute 'get'


 
le code en commentaire peux remplacer la ligne qui suit et donne la même erreur.
 
quelqu'un a une idée d'où ca peut venir?

Reply

Marsh Posté le 11-03-2009 à 18:08:02   

Reply

Marsh Posté le 11-03-2009 à 18:19:57    

siden a écrit :

quelqu'un a une idée d'où ca peut venir?


De Pwm.EntryField.grid qui renvoie None [:glenda]

 

Franchement c'est pas sérieux comme TALC [:petrus75]

Message cité 1 fois
Message édité par masklinn le 11-03-2009 à 18:23:35

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 11-03-2009 à 18:38:27    

masklinn a écrit :


De Pwm.EntryField.grid qui renvoie None [:glenda]  
 
Franchement c'est pas sérieux comme TALC [:petrus75]


TALC ca veut dire quoi?
 
En plus je viens de m'apercevoir que pour Entryfield c'est getvalue() que je dois utiliser...
 
mais ca résoud pas mon problème en remplacant ma ligne avec EntryField par celles en commentaires, des que je met une valeur dans le champ et que je valide ca fait la même chose.
 
Je comprend pas pourquoi il renverrai None
 

Code :
  1. File "/usr/lib/python2.5/lib-tk/Tkinter.py", line 1417, in __call__
  2.     return self.func(*args)
  3.   File "/usr/lib/python2.5/site-packages/Pmw/Pmw_1_3/lib/PmwEntryField.py", line 191, in _executeCommand
  4.     cmd()
  5.   File "test.py", line 20, in maj
  6.     entre=self.valentre.get()
  7. AttributeError: 'NoneType' object has no attribute 'get'

Reply

Marsh Posté le 11-03-2009 à 19:35:18    

siden a écrit :


TALC ca veut dire quoi?


Topic À La Con

siden a écrit :

mais ca résoud pas mon problème en remplacant ma ligne avec EntryField par celles en commentaires, des que je met une valeur dans le champ et que je valide ca fait la même chose.


 [:orly2]

 

Relis mon post avec le doigt, que ce soit la ligne commentée ou l'autre tu récupères la sortie d'.grid qui renvoie None [:spamatounet]

guybrush02 a écrit :

Décommente la ligne 16 [:arhendal]


Non mais avec ou sans s'pareil, dans tous les cas il appelle grid sur le machin qu'il vient de créer, et grid renvoie None (enfin ne renvoie rien ce qui en Python est équivalent à renvoyer None), et là paf ça fait des chocapics il colle None dans sa variable :o


Message édité par masklinn le 11-03-2009 à 19:37:05

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 11-03-2009 à 19:59:34    

Yessssss!!!
merci beaucoup t'as mis le doigt sur le prob qui me faisais chier depuis des jours.
 
En fait je pensais que faire  
 
        self.valentre=Entry(onglet1)
        self.valentre.grid(row=0,column=1,padx=3,pady=3)
 
ou bien  
        self.valentre=Entry(onglet1).grid(row=0,column=1,padx=3,pady=3)
 
ça revenait au même...
 
merci beaucoup je vais pouvoir avancer comme il faut maintenant

Reply

Sujets relatifs:

Leave a Replay

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