Il più semplice Hello World

Iniziamo dal più classico esempio, una semplice finestra con la sola barra del titolo, senza alcun contenuto, che mostrerà soltanto Hello World.

Avviato Glade (qui nella versione 3), in un nuovo progetto, cliccare sul pulsante Finestra all’interno della sezione Livelli principali.

Cliccare sulla nuova finestra apparsa e sulla finestra Editor sulla destra sarà possibile assegnare i valori alle proprietà della finestra. Limitiamoci inizialmente al solo titolo sulla barra superiore.

Sul campo Titolo della finestra scriveremo Hello World e sarà il titolo che verrà mostrato in cima alla fienstra. Appuntiamo inoltre il nome della finestra, qui chiamata window1 poiché sarà necessario per accedere alla stessa dal codice Python. Salviamo il progetto Glade da qualche parte col nome hello.glade e passiamo all’editor Python.

In un nuovo progetto, il codice minimale per avviare quest’interfaccia sarà il seguente:

import gtk
import gtk.glade
import pygtk
pygtk.require("2.0")

gladeFile = gtk.glade.XML('hello.glade')
window1 = gladeFile.get_widget('window1')
if window1:
  window1.show()
  gtk.main()

La sezione iniziale conterrà le importazioni dei moduli esterni, quindi con gtk.glade.XML verrà caricato il file hello.glade creato in precedenza. Il riferimento al file glade sarà necessario per accedere ai componenti al suo interno. Il primo di questi sarà infatti il riferimento alla finestra window1, la forma generale è gladeFile.get_widget(‘window1’) dove window1 è il controllo inserito in Glade.

Per abitudine tendo ad assegnare lo stesso nome tra i controlli contenuti nel file Glade e gli oggetti Python ma ciò non è in alcun modo obbligatorio.

Se è stato possibile recuperare l’oggetto window1 allora verrà eseguito il metodo show della finestra (GTKWindow) che la mostrerà a schermo e quindi avviato il cosiddetto mainloop, il ciclo principale che terrà in esecuzione l’applicazione GTK, mediante gtk.main().

Questo codice finito consiste in un’applicazione minimale che si occupa soltanto di caricare il file hello.glade e mostrare la finestra window1. Avviando il programma Python il risultato sarà appunto una finestra e basta.

Tuttavia questo codice non è ancora sufficiente per occuparsi anche della chiusura dell’applicazione e quindi l’interruzione del ciclo principale. Premendo il pulsante di chiusura si chiuderà la finestra ma non il programma PyGTK, che resterà invisibilmente in memoria. Se avviato da terminale basterà chiuderlo premendo CTRL+C o affidarsi ai comandi del sistema operativo per uccidere il processo.

E’ possibile scaricare il progetto Python e l’interfaccia Glade.

16 Responses to “Il più semplice Hello World”


  1. 1 nikalza ottobre 12, 2008 alle 11:16 pm

    Bello, complimenti, ti ho già inserito nel mio segnalibri.
    Una cosa sola : per avviare il programma, da terminale do “python hello.py”. E’ questo il modo giusto o ce ne sono altri?

  2. 2 urturino ottobre 13, 2008 alle 9:04 am

    Complimenti, era proprio ora che qualcuno si occupasse di pygtk.
    In rete c’è davvero poco in italiano, questo blog mi sarà utilissimo, grazie di averlo creato.

  3. 3 Muflone ottobre 13, 2008 alle 5:38 pm

    nikalza quella e` una delle maniere
    l’altra e` rendere il file eseguibile se usi linux (chmod a+x nomefile.py) e aggiungere sulla prima riga dello script
    #!/usr/bin/env python

    se usi windows basta dargli estensione .pyw

    ciao e grazie a tutti🙂

  4. 4 Piero agosto 3, 2009 alle 10:44 am

    Quando eseguo il programma, su wiondows, ottengo questo errore:

    Traceback (most recent call last):
    File “test.py”, line 2, in
    import gtk.glade
    ImportError: DLL load failed: Impossibile trovare il modulo specificato.

    Premetto che eseguendo programmi con PYGTK, che non prevedono l’uso di GLADE, funzionano benissimo.

    Ciao

  5. 5 Sam Qasbah maggio 10, 2010 alle 2:43 pm

    Ciao, e grazie per il lavoro hai fatto su queste pagine.
    Un problema: avviando da terminale lo script Hello.glade ricevo il seguente errore:

    patro@patro-desktop:~/Documenti/Glade/01 HelloWorld$ python Hello.py

    (Hello.py:7713): libglade-WARNING **: Expected . Got .

    (Hello.py:7713): libglade-WARNING **: did not finish in PARSER_FINISH state
    Traceback (most recent call last):
    File “Hello.py”, line 8, in
    gladeFile = gtk.glade.XML(‘Hello.glade’)
    RuntimeError: could not create GladeXML object

    hai idea da che cosa possa dipendere?

    Grazie ancora e ciao.

  6. 6 Sam Qasbah maggio 11, 2010 alle 7:51 am

    Scusa se ripeto, ma mi sono accorto che il blog elimina dai messaggi tutte le parti tra parentesi angolari, per cui riscrivo l’errore sostituendo alle parentesi angolari quelle quadre

    patro@patro-desktop:~/Documenti/Glade/01 HalloWorld$ python Hello.py

    (Hello.py:1792): libglade-WARNING **: Expected [glade-interface]. Got [interface].

    (Hello.py:1792): libglade-WARNING **: did not finish in PARSER_FINISH state
    Traceback (most recent call last):
    File “Hello.py”, line 8, in [module]
    gladeFile = gtk.glade.XML(‘Hello.glade’)
    RuntimeError: could not create GladeXML object
    patro@patro-desktop:~/Documenti/Glade/01 HalloWorld$

    Grazie ancora e ciao

  7. 7 Muflone maggio 11, 2010 alle 4:19 pm

    ciao

    quando apri glade ti fa una domanda sul tipo di file da generare.
    chiede se usare il formato gtkbuilder o libglade, devi scegliere quest’ultimo.

    per un progetto gia` salvato lo trovi su modifica – preferenze di glade

  8. 8 ferraro96 settembre 7, 2010 alle 6:11 pm

    ciao, intanto ottimo sito, sia questo che ubuntutrucchi.

    scrivo perché ho qualche problema con questo tutorial. quando eseguo il file .py mi restituisce come errore:

    ImportError: No module named glade

    eppure mi sembra di aver fatto tutto giusto..

  9. 9 Muflone settembre 7, 2010 alle 6:26 pm

    su che sistema/distribuzione stai operando?

  10. 10 ferraro96 settembre 7, 2010 alle 9:56 pm

    maverick beta, pyhton 2.6.6

  11. 11 Muflone settembre 11, 2010 alle 5:50 am

    installa la libreria glade dal pacchetto python-glade2

  12. 12 ferraro96 settembre 19, 2010 alle 8:07 am

    niente da fare. adesso quando faccio partire il file .py l’icona diventa una croce e quando clicco col sinistro mi salva uno screenshot sul desktop del desktop

  13. 13 Muflone settembre 19, 2010 alle 8:59 am

    non hai messo lo shebang
    #!/usr/bin/python
    o
    #!/usr/bin/env python

  14. 14 andrea novembre 13, 2010 alle 5:36 pm

    scusami, ma ho un problema, eseguendo il codice con Geany l’unica cosa che ottengo è la geany_run_shell.sh e nessuna finestra di “Ciao Mondo!!”, nessun errore o altro, rimane aperta la shell senza nessun messaggio, nemmeno quello della fine programma.

  15. 15 Muflone novembre 13, 2010 alle 5:56 pm

    avrai saltato qualche riga, probabilmente quella con window1.show()

  16. 16 andrea novembre 14, 2010 alle 10:33 am

    ho trovato l’errore, scorrendo nelle impostazioni della finestra di glade, lo scroll aveva cambiato l’opzione Tipo finestra in “finestra a comparsa”.


Lascia un commento

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




Indice degli argomenti


%d blogger cliccano Mi Piace per questo: