Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

global name 'selObject' is not defined

10 réponses
Avatar
lionmarron
Bonjour

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

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

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

AH

10 réponses

Avatar
Pierre Quentel
On 23 juil, 11:02, lionmarron wrote:
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
Avatar
lionmarron
On 23 juil, 11:44, Pierre Quentel wrote:

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
Avatar
lionmarron
On 23 juil, 11:44, Pierre Quentel wrote:

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
Avatar
lionmarron
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
Avatar
cémoi
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
Avatar
lionmarron
Ça a marché. Merci.

AH
Avatar
lionmarron
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
Avatar
lionmarron
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
Avatar
Alain Ketterlin
lionmarron writes:

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.
Avatar
lionmarron
Pardon pour le bruit.

J'avais effacé le message mais trop tard apparemment.