[Python] Inorridiamo! Python e TkInter usati come fossero Visual Basic

2016-12-08 Per discussione Francesco Maida
Salve, stavo cercando di capire i rudimenti di TkInter.
Venendo da anni di Visual Basic quello che non mi convince molto è il modo
con cui si accede al valore dei widget.
Faccio un esempio pratico con la cosa più semplice che ho trovato: le label.

Se voglio sapere il testo contenuto in una label devo scrivere:

testo = label.cget("text")

Se invece voglio modificare il testo di una label devo scrivere una cosa
diversa:

label.configure(text="")

A me pareva un po assurdo avere due metodi per interrogare il valore di una
proprietà, così per protesta ho scritto una classe derivata da
tkinter.Label con una proprietà "text" che ha un get ed un set.
In questo modo posso scrivere cose del tipo:

testo = label.text
label.text = "Nuovo testo della label"

Qui se volete c'è l'esempio completo con la classe derivata ed
un'applicazione di prova che gira sotto Python 3:

https://gist.github.com/fmaida/ca8e43e1a75ab88e8ad6093ca42598cc


A me sembra 100 volte più semplice e intuitivo del sistema di TkInter, ma
forse mi sfugge qualcosa sulle buone abitudini della programmazione...


Ma secondo voi questa cosa che ho fatto è un'eresia oppure è una buona cosa?
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Inorridiamo! Python e TkInter usati come fossero Visual Basic

2016-12-08 Per discussione Daniele Zambelli
Il 8 dicembre 2016 20:11, Francesco Maida 
ha scritto:
> Se voglio sapere il testo contenuto in una label devo scrivere:
>
> testo = label.cget("text")
>
> Se invece voglio modificare il testo di una label devo scrivere una cosa
> diversa:
>
> label.configure(text="")

Si può usare anche quest'altro modo:

testo = etichetta['text']
etichetta['text'] = 'Nuovo testo della label'

Che non differisce molto dal tuo esempio:

> testo = label.text
> label.text = "Nuovo testo della label"

I widget in tkinter sono visti come dizionari (se non l'hai ancora
fatto dà un'occhiata ai dizionari Python) i cui elementi sono coppie:

 - valore

Ai parametri si può assegnare un valore anche al momento della
creazione del widget, quindi invece che scrivere le due istruzioni:

etichetta = Label(mioContenitore1)
etichetta['text'] = 'pippo'

si può scrivere direttamente:

self.etichetta = Label(mioContenitore1, text = 'pippo')

Puoi vedere il funzionamento in questo programma:

gist.github.com/danielezambelli/f53ba2f51bc2fb5891db5f6bda85dde2

che ho scritto partendo dalla documentazione:

linuxdidattica.org/docs/altre_scuole/msm_p/txs_01.html#widget-esempio-introduttivo

Spero che possa esserti utile.

-- 

Daniele

www.fugamatematica.blogspot.com

giusto!
nel verso
forse è perché non guardiamo le cose
Quando non ci capiamo,
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python