global name 'selObject' is not defined

Le
lionmarron
Bonjour

Je débute en Python (version 2.4.2), et lorsque je lance un script de
l'ouvrage Apprendre à programmer avec Python (O'Reilly, 2005),
j'obtiens le message d'erreur suivant :

Exception in Tkinter callback
Traceback (most recent call last):
File "C:Python24liblib-tkTkinter.py", line 1345, in __call__
return self.func(*args)
File "C:Python24page219.py", line 41, in mouseDown
self.c.lift(self,selObject)
NameError: global name 'selObject' is not defined

Quelqu'un comprend-t-il ce que ça veut dire ? Merci pour toute
explication.

AH
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Pierre Quentel
Le #22386671
On 23 juil, 11:02, lionmarron
Bonjour

Je débute en Python (version 2.4.2), et lorsque je lance un script de
l'ouvrage Apprendre à programmer avec Python (O'Reilly, 2005),
j'obtiens le message d'erreur suivant :

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:Python24liblib-tkTkinter.py", line 1345, in __call__
    return self.func(*args)
  File "C:Python24page219.py", line 41, in mouseDown
    self.c.lift(self,selObject)
NameError: global name 'selObject' is not defined

Quelqu'un comprend-t-il ce que ça veut dire ? Merci pour toute
explication.

AH



Bonjour,

Et bienvenue dans la communauté des développeurs Python !

Le message signifie que l'interpréteur Python ne trouve pas le nom
"selObject" dans l'espace de noms au moment où il exécute la ligne de
code

C'est parce que le code original est
self.c.lift(self.selObject)

avec un point entre self et selObject, pas une virgule. Donc selObject
est un attribut de l'objet self, pas le nom d'une variable locale ou
globale

Les exemples du livre sont téléchargeables en ligne, ce qui évite les
fautes de frappe

- Pierre
lionmarron
Le #22387071
On 23 juil, 11:44, Pierre Quentel
avec un point entre self et selObject, pas une virgule. Donc selObject



Merci pour cette réponse. Effectivement c'était bien ça.

Un problème que pose encore ce script, c'est qu'il ne veut se terminer
si on clique sur le bouton Terminer. Il s'arrête seulement si on
utilise la croix rouge du coin de la fenêtre.

Cette fois je pense que ça ne doit pas être une faute de frappe car il
n'est pas le seul script à faire ça. La ligne qui définit le bouton
est la suivante :

b_fin=Button(self,text='Terminer',bg='royal blue',fg='white',
font=('Helvetica',10,'bold'),command=self.quit)

Quelques fois cela marche si on ajoute quelque chose comme
Draw().destroy() après Draw().mainloop(), mais là ce n'est pas le cas.

Peut-être je ferais mieux de travailler sous Linux plutôt que sous
Windows XP, mais je ne m'y suis pas encore mis.

AH
lionmarron
Le #22387691
On 23 juil, 11:44, Pierre Quentel
Les exemples du livre sont téléchargeables en ligne, ce qui évite l es
fautes de frappe



Je ne sais pas si c'est moi qui m'y prend mal ou si l'information
n'est plus d'actualité, mais je n'ai pas trouvé le lien.

AH
lionmarron
Le #22388421
Maintenant j'ai une erreur avec un autre script :

Traceback (most recent call last):
File "C:/Python24/page224.py", line 4, in -toplevel-
import Pmw
ImportError: No module named Pmw

Cette fois je n'ai pas l'impression qu'il puisse s'agir d'une faute de
frappe. C'est le début du fichier et les 4 premières lignes sont :

---------------------------------------------
# -*- coding:Latin-1 -*-

from Tkinter import *
import Pmw
---------------------------------------------

Merci pour toute explication.

AH
cémoi
Le #22389621
Le 23/07/2010 21:12, lionmarron a écrit :
Maintenant j'ai une erreur avec un autre script :

Traceback (most recent call last):
File "C:/Python24/page224.py", line 4, in -toplevel-
import Pmw
ImportError: No module named Pmw

Cette fois je n'ai pas l'impression qu'il puisse s'agir d'une faute de
frappe. C'est le début du fichier et les 4 premières lignes sont :

---------------------------------------------
# -*- coding:Latin-1 -*-

from Tkinter import *
import Pmw
---------------------------------------------

Merci pour toute explication.

AH



Le message que te fournit Python indique que le module Pmw n'est pas
disponible.
Ce module ne fait pas partie des modules livrés avec Python 2.4, il te
faut donc
l'installer.
Tu peux le télécharger gratuitement ici:
http://sourceforge.net/projects/pmw/
Ensuite après avoir décompacté l'archive, dans le répertoire racine de
celle-ci
tu devrais trouver un fichier nommé setup.py.
Depuis la ligne de commande (cmd.exe) en te plaçant dans le répertoire ou se
trouve setup.py tu exécutes ensuite:

C:Python24python.exe setup.py install

Il ne te reste plus qu'à relancer ton script.
HTH,

Laurent
lionmarron
Le #22390311
Ça a marché. Merci.

AH
lionmarron
Le #22392291
J'ai encore un problème. Cette fois c'est le message d'erreur
suivant :

Traceback (most recent call last):
File "C:/Python24/page227.py", line 55, in -toplevel-
FenPrinc().mainloop()
File "C:/Python24/page227.py", line 36, in __init__
self.fb=self.can.create_window(self.x,self.y,window=self.bou)
AttributeError: FenPrinc instance has no attribute 'bou'

J'utilise la version 2.4.2 de Python, mais je ne sais pas pour quelle
version le livre de Swinnen a été écrit, et je ne sais pas si le
problème peut venir de là.

Quelqu'un aurait-il une idée ? Merci pour tout éclaircissement.

AH
lionmarron
Le #22392491
J'ai encore un problème avec un nouveau script. Maintenant il s'agit
du message d'erreur :

Traceback (most recent call last):
File "C:/Python24/page227.py", line 56, in -toplevel-
FenPrinc().mainloop()
File "C:/Python24/page227.py", line 36, in __init__
self.bou=Button(self.can,text='Start',command=self.start)
AttributeError: FenPrinc instance has no attribute 'start'

J'utilise la version 2.4.2 de Python et je ne sais pas pour quelle
version le livre de Swinnen a été écrit (il s'agit de l'édition 200 5).
Je ne sais pas non plus si le problème peut venir de là.

Quelqu'un aurait-il une idée ? Merci pour tout éclaircissement.

AH
Alain Ketterlin
Le #22394471
lionmarron
Traceback (most recent call last):
File "C:/Python24/page227.py", line 55, in -toplevel-
FenPrinc().mainloop()
File "C:/Python24/page227.py", line 36, in __init__
self.fb=self.can.create_window(self.x,self.y,window=self.bou)
AttributeError: FenPrinc instance has no attribute 'bou'


[...]
Quelqu'un aurait-il une idée ? Merci pour tout éclaircissement.



Oui, tout le monde a une idée en lisant le message : tu passes self.bou
en valeur de window a create_window, mais l'objet courant (instance de
FenPrinc) n'a pas d'attribut bou. C'est dans le constructeur, à la lig ne
36 du fichier page227.py, qui se trouve dans le répertoire Python24 de
ton disque C:. La ligne en question est :

self.fb=self.can.create_window(self.x,self.y,window=self.bou)

Tu as une objection de principe au fait de lire les messages d'erreur ?
Quelqu'un t'a dit que ce n'était pas bien ?

-- Alain.

P/S: même réponse à ton autre message, modulo le nom de l'at tribut et la
ligne du fichier.
lionmarron
Le #22394461
Pardon pour le bruit.

J'avais effacé le message mais trop tard apparemment.
Publicité
Poster une réponse
Anonyme