Python e PyGObject

Ho iniziato da poco con Python e mi sono buttato subito nella programmazione di GUI con GTK. Come ho detto in precedenza il supporto di un IDE come Anjuta velocizza molto lo sviluppo di una GUI ma trovandomi di fronte a uno stupidissimo problema ho dovuto scoprire e utilizzare PyGObject. Mi serviva semplicemente una finestra di dialogo per selezionare una directory di lavoro. A colpo d’ occhio Anjuta offre un widget chiamato File Chooser Dialog ma per motivi che ignoro non sono riuscito a far funzionare. Nella fattispecie il problema è che non riuscivo a far comparire i pulsanti Ok e Annulla nella finestra di dialogo. Tagliando corto ho risolto mediante PyGObject riuscendo tra l’altro a sviluppare un programma più efficiente ed elegante. In pratica non bisogna aggiungere nessun widget da Anjuta si fa tutto mediante codice. A seguire un esempio dove la variabile folder conterrà la directory selezionata mediante la dialogbox.

self.selectfolder = Gtk.FileChooserDialog(
title = "Select destination folder",
action = Gtk.FileChooserAction.SELECT_FOLDER,
buttons = (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_OPEN, Gtk.ResponseType.OK)
)

response = self.selectfolder.run()

if response == Gtk.ResponseType.OK:
folder = self.selectfolder.get_filename()

self.selectfolder.destroy()

Quindi molto semplicemente l’oggetto grafico self.selectfolder (istanza di Gtk.FileChooserDialog) viene creato usato e distrutto con poche righe di codice.

Quando disegniamo una GUI con Anjuta, Anjuta genera un file XML che contiene la descrizione della suddetta GUI. In soldoni con l’ istanza della classe Gtk.Builder il file XML viene analizzato, quindi la GUI viene generata. Con PyGObject questo passaggio non avviene.

Annunci
Questa voce è stata pubblicata in Senza categoria e contrassegnata con , , , , . Contrassegna il permalink.

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...