Forum >> Principianti >> Classi e Tkinter

Pagina: 1

Buonasera, ogni tanto riprendo in mano Python e ogni tanto torno a fare qualche domandina.


Sto cercando di "aggiornare" un programma da me fatto tempo fa alla programmazione ad oggetti.

Trovo delle difficoltà quando arrivo all'interfaccia grafica con tkinter; nel senso che nella versione vecchia con le funziona riesco sempre a lavorare nella finestra root, se modifico il codice con le classi ricevo un errore di "NameError: name 'ROOT' is not defined".

Quindi da quello che capisco, dall'interno della classe non vedo la mia finestra ? Devo crearne una nella classe ?




Scusate se la domanda puo' sembrare banale ma pe me non lo è.




Sto lavorando su Linux e con Python 3.9




Grazie




------
Alberto
... se modifico il codice con le classi ricevo un errore di "NameError: name 'ROOT' is not defined".
Dipende dalla struttura del Tuo programma e dal name-space tanto del modulo quanto del resto del codice interessato.

Se rot fa parte del namespace globale del modulo ed è definito prima dell'instanziamento della classe, allora, l'oggetto istanziato potrà vedere rot, altrimenti no, se per caso rot è definito all'interno di una funzione non potrà mai essere visto all'esterno di essa.




Detto questo, guarda che in linea di principio un oggetto (inteso come istanza di una classe) dovrebbe essere "autosufficiente" per il suo compito, cioè conoscere tutto ciò che gli serve per eseguire la sua funzione o come variabile di istanza o come variabile di classe, e non dipendere da altri fattori esterni.




Nel caso in specie (Tk() di tkinter) probabilmente l'oggetto rot dovrebbe essere passato come parametro e memorizzato quale variabile di istanza ma non può dirsi niente di certo non conoscendo il codice.

Se ritieni, simula in un breve esempio la situazione che Ti da errore che vediamo un po'.

Ciao

Fatti non foste a viver come bruti...


Pagina: 1



Esegui il login per scrivere una risposta.