By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,034 Members | 2,000 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,034 IT Pros & Developers. It's quick & easy.

Principiante in cerca di spiegazione!

P: n/a
Ciao a tutti,
premetto a tutti che st imparando proprio adesso a studiare python ed
ho il seguente problema ... questo script copiato pari pari da un
tutorial mi rid un'errore che non capisco.. questo il codice:

from Tkinter import * # importo il modulo

# costruisco una mia classe che gestisce la finestra
class Application(Frame):

# metodo che scrive un messaggio a video
def scrivi_messaggio(self):
self.mess["text"] = "Ciao a tutti!",

# metodo che pulisce il messaggio a video
def cancella_messaggio(self):
self.mess["text"] = "",

# metodo costruttore che crea gli oggetti grafici
def __init__(self, master=None):
f = Frame(master)
f.pack()

# crea il bottone di uscita (di colore rosso)
self.esci = Button(f)
self.esci["text"] = "QUIT"
self.esci["fg"] = "red"
self.esci["command"] = f.quit
self.esci.pack({"side": "left"})

# crea il bottone che permette di scrivere il messaggio
self.butt_mess = Button(f)
self.butt_mess["text"] = "Scrivi",
self.butt_mess["command"] = self.scrivi_messaggio
self.butt_mess.pack({"side": "left"})

# crea il bottone che permette di pulire il messaggio
self.butt_canc_mess = Button(f)
self.butt_canc_mess["text"] = "Cancella",
self.butt_canc_mess["command"] = self.cancella_messaggio
self.butt_canc_mess.pack({"side": "left"})

# crea l'oggetto grafico che contiene il messaggio
self.mess = Message(f)
self.mess["text"] = "",
self.mess.pack({"side": "left"})
# corpo principale del programma
finestra = Tk()
app = Application(finestra)
finestra.mainloop()

e mi ritorna un'errore come:

Traceback (most recent call last):
File "C:/Python23/tests/tkinter.py", line 4, in -toplevel-
class Application(Frame):
File "C:/Python23/tests/tkinter.py", line 20, in Application
self.esci = Button(f)
NameError: name 'f' is not defined

?? Eppure la var f definita nell' _INIT_

qualcuno mi s spiegare perch?

Grazie in anticipo!

Augusto
Jul 18 '05 #1
Share this Question
Share on Google+
3 Replies


P: n/a
Augusto wrote:
Ciao a tutti,
premetto a tutti che st imparando proprio adesso a studiare python ed
ho il seguente problema ... questo script copiato pari pari da un
tutorial mi rid un'errore che non capisco.. questo il codice:

from Tkinter import * # importo il modulo

# costruisco una mia classe che gestisce la finestra
class Application(Frame):

# metodo che scrive un messaggio a video
def scrivi_messaggio(self):
self.mess["text"] = "Ciao a tutti!",

# metodo che pulisce il messaggio a video
def cancella_messaggio(self):
self.mess["text"] = "",

# metodo costruttore che crea gli oggetti grafici
def __init__(self, master=None):
f = Frame(master)
f.pack()
You may be mixing tabs and spaces. Try to use *only* spaces.
Every thing from here...
# crea il bottone di uscita (di colore rosso)
self.esci = Button(f)
self.esci["text"] = "QUIT"
self.esci["fg"] = "red"
self.esci["command"] = f.quit
self.esci.pack({"side": "left"})

# crea il bottone che permette di scrivere il messaggio
self.butt_mess = Button(f)
self.butt_mess["text"] = "Scrivi",
self.butt_mess["command"] = self.scrivi_messaggio
self.butt_mess.pack({"side": "left"})

# crea il bottone che permette di pulire il messaggio
self.butt_canc_mess = Button(f)
self.butt_canc_mess["text"] = "Cancella",
self.butt_canc_mess["command"] = self.cancella_messaggio
self.butt_canc_mess.pack({"side": "left"})

# crea l'oggetto grafico che contiene il messaggio
self.mess = Message(f)
self.mess["text"] = "",
self.mess.pack({"side": "left"})
.... to here must be indented to the same level as the two first lines in
the body of the __init__() method
# corpo principale del programma
finestra = Tk()
app = Application(finestra)
finestra.mainloop()

e mi ritorna un'errore come:

Traceback (most recent call last):
File "C:/Python23/tests/tkinter.py", line 4, in -toplevel-
class Application(Frame):
File "C:/Python23/tests/tkinter.py", line 20, in Application
self.esci = Button(f)
NameError: name 'f' is not defined
f is only known inside the body of __init__()

?? Eppure la var f definita nell' _INIT_

qualcuno mi s spiegare perch?

Grazie in anticipo!

Augusto


Remember: whitespace *is* significant in Python.

Peter

PS: Try to post in english, nobody will care for occasional mistakes.

Jul 18 '05 #2

P: n/a
On Wednesday 11 February 2004 4:43 pm, Augusto wrote:
Ciao a tutti,
premetto a tutti che st imparando proprio adesso a studiare python ed
ho il seguente problema ... questo script copiato pari pari da un
tutorial mi rid un'errore che non capisco.. questo il codice:

from Tkinter import * # importo il modulo

# costruisco una mia classe che gestisce la finestra
class Application(Frame):

# metodo che scrive un messaggio a video
def scrivi_messaggio(self):
self.mess["text"] = "Ciao a tutti!",

# metodo che pulisce il messaggio a video
def cancella_messaggio(self):
self.mess["text"] = "",

# metodo costruttore che crea gli oggetti grafici
def __init__(self, master=None):
f = Frame(master)
f.pack()

# crea il bottone di uscita (di colore rosso)
self.esci = Button(f)
self.esci["text"] = "QUIT"
self.esci["fg"] = "red"
self.esci["command"] = f.quit
self.esci.pack({"side": "left"})

# crea il bottone che permette di scrivere il messaggio
self.butt_mess = Button(f)
self.butt_mess["text"] = "Scrivi",
self.butt_mess["command"] = self.scrivi_messaggio
self.butt_mess.pack({"side": "left"})

# crea il bottone che permette di pulire il messaggio
self.butt_canc_mess = Button(f)
self.butt_canc_mess["text"] = "Cancella",
self.butt_canc_mess["command"] = self.cancella_messaggio
self.butt_canc_mess.pack({"side": "left"})

# crea l'oggetto grafico che contiene il messaggio
self.mess = Message(f)
self.mess["text"] = "",
self.mess.pack({"side": "left"})
# corpo principale del programma
finestra = Tk()
app = Application(finestra)
finestra.mainloop()

e mi ritorna un'errore come:

Traceback (most recent call last):
File "C:/Python23/tests/tkinter.py", line 4, in -toplevel-
class Application(Frame):
File "C:/Python23/tests/tkinter.py", line 20, in Application
self.esci = Button(f)
NameError: name 'f' is not defined

?? Eppure la var f definita nell' _INIT_

qualcuno mi s spiegare perch?

Grazie in anticipo!

Augusto


f is indeed defined in __init__ and is therefore local to __init__. The name
is not available outside that method. I think that your problem may be that
the code following "f.pack()" to the end of the class definition is meant
also to be part of the __init__ function. Try indenting it all to be level
with "f.pack()".

James
--
James Henderson, Logical Progression Ltd.
http://www.logicalprogression.net/
http://sourceforge.net/projects/mailmanager/
Jul 18 '05 #3

P: n/a
All right.. Thanks! Now it's ok..

Python rulez! bye!
Jul 18 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.