Python GTK3 – concetti base e gestione delle stringhe

logo2

Main loop e segnali

GTK+ è event-driven: quando non ha niente da fare aspetta nel main loop in attesa di input e si attiva quando un segnale (o messaggio) arriva invocando una funzione connessa al segnale. Queste funzioni sono di solito chiamate callback.
La forma generica è

handler_id = widget.connect("event", callback, data)

dove:
widget è un istanza a un widget che abbiamo precedentemente creato (es. un pulsante).
Ogni widget ha uno o più event propri; per esempio il pulsante ha clicked.
callback è il nome della funzione e data quanto ciò che viene passato alla funzione, l’argomento è opzionale.
La funzione ritorna un handler, un numero, può essere ignorato se non serve.

Praticamente tutte le applicazioni sono connesse a un segnale delete-event della finestra principale; se emesso l’applicazione viene chiusa. Esempio:

window.connect("delete-event", Gtk.main_quit)

Gtk.main_quit termina il main loop.

Proprietà

Ogni widget ha un suo insieme di proprietà che ne descrivono la configurazione. Per esempio per un’etichetta (label) allineata a destra, con testo “Hello World!”, inclinata di 25 gradi:

label = Gtk.Label(label="Hello World", angle=25, halign=Gtk.Align.END)

Quest’istruzione è equivalente a:

label = Gtk.Label()
label.set_label("Hello World")
label.set_angle(25)
label.set_halign(Gtk.Align.END)

È anche possibile ritrovare (get) o settare (set) le proprietà con widget.get_property("prop-name") e widget.set_property("prop-name", value).

Le stringhe

Piccolo problema qui. Anticamente i ‘puters gestivano solo i caratteri ASCII, 128 caratteri, quelli ‘mericani, niente lettere accentate.

Python 2

La versione 2 di Python ha due tipi di stringhe: str e unicode.
È possibile usare le stringhe unicode in questi modi:

u0

Peraltro Python 2 consente di mischiare le stringhe unicode e str se queste ultime contengono scolo caratteri ASCII

u1

Esiste però la possibilità di usare il metacomando (direttiva) # -*- coding: utf-8 -*-  (dev’essere la prima o la seconda riga dello script).

u2

Insomma un incubo; con gli script e la direttiva indicata in genere le cose funzionano.

Il problema è che GTK lavora con unicode. Per cui attenzione:

u3

tutto OK, finché non mischiate.

Python 3

Unicode è adesso il default per le stringhe, niente più problemi.
Cioè di questo tipo, ma per rendere la vita interessante ce ne sono altri millemila
😉 🙂

Advertisements
Post a comment or leave a trackback: Trackback URL.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: