Ruby inizio con l’interfaccia grafica

ruby-mini-logo
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

hw0

Uhmmm! un po’ piccolina come finestra, ingrandisco

hw01

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

hw1

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

Posta un commento o usa questo indirizzo per il trackback.

Trackback

  • Ruby Tk – Una prima finestra | Ok, panico su 14 ottobre 2013 alle 09:28

    […] 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 […]

Lascia un commento

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.