Re: [Python] Problema con Tkinter ma più in generale con le classi
Y3s
y3s a katamail.com
Ven 16 Nov 2007 11:07:45 CET
Il giorno 16/nov/07, alle ore 09:20, Pietro Battiston ha scritto:
> Salve a tutti. Dal basso della mia scarsa esperienza con gli
> oggetti, ho un problema forse banale ma che si scontra da un paio
> di giorni con tutto quello che ho sempre pensato sulle classi.
>
> Il problema è riprodotto nel seguente codice:
>
> ###################################################
> import Tkinter
>
> class finestra(Tkinter.Toplevel):
> def __init__(self):
> self=Tkinter.Tk() #Il mio oggetto instanziato lo
> voglio identico ad una finestra toplevel "classica"...
> self.stringa="testo" #... tranne che ci voglio
> aggiungere i metodi e gli attributi che mi servono
Forse non ti è chiaro il modo in cui funzionano gli assegnamenti in
python. In quel modo assegni al nome "self" locale alla funzione un
oggetto. Ma non stai modificando l'oggetto stesso! Per fare quello
che vuoi, devi utilizzare il __new__ in un modo simile a questo (non
testato):
class Finestra(Tkinter.Toplevel):
def __new__(cls):
oggetto = Tkinter.Tk()
oggetto.stringa = "testo"
return oggetto
Questo supponendo che Tkinter.Tk() restituisca un valore di tipo
Tkinter.Toplevel (non conosco tkinter)<
> Ho provato a ragionarci un po'... ma se la classe Toplevel
> (ovviamente ho verificato nella docstring che Tkinter.Tk "Return a
> new Toplevel widget...") non ha di per sé il metodo "update", come
> può essergli aggiunto dalla funzione Tk?! Un metodo non può essere
> aggiunto ad un'istanza solo aggiungendolo alla sua classe?! E se
> anche non fosse così, e in realtà Tkinter.Tk() avesse qualche modo
> magico di aggiungere metodi, perché questi metodi non si vedono
> dall'"esterno" della classe finestra?
>
No, un metodo può essere aggiunto anche a una singola istanza.
>
> Pietro
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
--
Antonio Valente
Maggiori informazioni sulla lista
Python