Finito l’esame degli elementi base del linguaggio oggi mi addentro nel magico mondo dell’interfaccia grafica, quella ormai giudicata indispensabile dappertutto. O quasi: Ruby viene spesso utilizzato per il web e allora niente finestre, pulsanti, menu, si usano quelli del browser. Inoltre ho visto che Ruby gode delle simpatie di lispisti e fautori della programmazione funzionale, OK, per il momento non c’interessa, torniamo al dunque.
L’interfaccia grafica standard (GUI) di Ruby è Tk. Tk inizialmente era la GUI per il linguaggio di scripting Tcl sviluppato da John Ousterhout. (Ehi, ricordo, una delle ultime cose che ho usato su Unix e poi ho tentato di riprendere quando ho iniziato con Linux!).
La parte non personale della frase precedente viene dalla guida che userò: Ruby/TK Guide.
Il collegamento tra Ruby e Tk è dentro Ruby ma il pacchetto Tk richiede l’installazione; per Windows si trova in ActiveState’s ActiveTcl.
A questo punto siamo pronti per il nostro primo esempio, il classico Hello World!
#!/usr/bin/ruby # encoding: UTF-8 #hw0.rb require 'tk' root = TkRoot.new { title "Hello, World!" } TkLabel.new(root) do text 'Hello, World!' pack { padx 15 ; pady 15; side 'left' } end Tk.mainloop
Uhmmm! un po’ piccolina come finestra, ingrandisco
Sì, già un pochino meglio, c’è tutto.
Esaminiamo il codice: la prima riga è quella solita per Linux, nel mondo Windows viene vista come un semplice commento; la seconda, benché tecnicamente sia un commento ci consente di usare i caratteri accentati e poi segue un commento vero e proprio con il nome del file, sapete che sono un confusionario e mi dimentico delle cose.
La prima istruzione seria la troviamo alla riga 5, dove dichiariamo che è richiesto il modulo tk
.
Alla riga 7 definiamo la finestra, root. Vedremo in seguito che con Tk si definisce un widget, si riempie (gerarchicamente) e si esegue.
Il nostro widget si chiama (come si usa abitualmente) root
e nel definirlo gli passiamo il titolo. All’interno della finestra root
inseriamo una TkLabel
(etichetta), di cui settiamo il testo e la packiamo (impacchettiamo).
Per visualizzare il tutto basta richiamare il loop di Tk, riga 13.
Semplice vero?
Prima modifica naif, voglio la finestra più grande. Proviamo così:
#!/usr/bin/ruby # encoding: UTF-8 #hw1.rb require 'tk' root = TkRoot.new { title "Hello, World!" } TkLabel.new(root) do text ' Hello, World! ' pack { padx 15 ; pady 15; side 'left' } end Tk.mainloop
Hmmm, sì, cioè un po’, come dire… tutto qui?
No, dai, siamo appena agli inizi, ricordate che Ankh-Morpork non è stata costruita in un giorno (cit.) 🙂
Trackback
[…] fare dopo l’Hello World! del post precedente? D’oh! (cit.): è ora di iniziare con una finestra vera, ci mettiamo dentro i frame e un paio […]