[Python] python 3.5.2+ tkinter

Andrea D'Amore and.damore a gmail.com
Ven 7 Ott 2016 10:49:00 CEST


2016-10-06 12:12 GMT+02:00 antonio autolitano <antonioautolitano a gmail.com>:
> Sono un'appassionato di programmazione e da poco tempo ho iniziato a
> studiare Python 3.5.2.

Da dove?

> Dopo aver aperto
> la mia prima finestra, e passato alla successiva, non riesco più a chiudere
> quest'ultima (finestra1) per passare alla finestra successiva (finestra2),
> in quanto l'istruzione finestra1.destroy() non da nessun effetto. Domanda:
> perchè per chiudere la prima finestra il comando "destroy" funziona e per la
> successiva no ?

Perché quando usi il nome "finestra" in istruz() stai usando la
variabile globale "finestra" mentre quando cerchi di accedere a
"finestra1" in xx() non c'è una variabile globale corrispondente e
quindi hai l'errore sul nome.

Questo succede perché "finestra" l'hai definita nel modulo con

    finestra=Tk()

mentre "finestra1" l'hai definita in istruz() e quindi ha una
visibilità (scope) locale a quella sola funzione.


Potresti allocare entrambi gli oggetti fuori nel modulo oppure usare
il comando "global", che in genere viene visto male ma che per un
esempio così semplice può andare.


Detto questo passo ai suggerimenti personali: secondo me hai fatto
bene ad allegare il codice piuttosto che copincollare tante righe, ma
sarebbe stato anche opportuno indicare l'errore ottenuto nel corpo del
messaggio, ad esempio.

    Ho fatto girare il codice in allegato e ottengo

            NameError: name 'finestra1' is not defined


Il tuo codice è poco leggibile, il riferimento suggerito per lo stile
si chiama PEP8, senza fare troppo gli integralisti (ad esempio con gli
80 o 78 o 120 caratteri) suggerisco di leggerlo e di atternetici
(attenervici? attenervitici?) finché non ci sarà la necessità di
violarlo.

Inoltre ti serve una guida su come strutturare un programma GUI,
qualcuno ti consiglierà Qt che è moderno e ha i suoi vantaggi in
termini di struttura del codice. Il vantaggio di Tk è che ancora oggi
viene distribuito col core di python, con poche configurazione assume
un aspetto decente.
Purtroppo non sono la persona indicata per suggerirti quale guida
usare, quindi devi aspettare che qualcun altro risponda.


-- 
Andrea


Maggiori informazioni sulla lista Python