Gambas – una GUI facile per Linux – 2

g2

Ancora su Gambas, continuo da qui.
Oggi concludo con una piccolissima demo di come utilizzarlo quale interfaccia grafica per programmi che questa interfaccia non ce l’hanno, quelli per la linea di comando nel terminale proprio come si usava una volta (e anche adesso, dai!).

demoG

Ecco il risultato della demo. Contiene un’area di testo per visualizzare messaggi (una Label) e tre pulsanti:

  • chi sono scrive nell’area di testo il path della directory dove si trova l’eseguibile (in realtà pCode) Gambas e il nome dato al progetto;
  • esegui lancia uno script Python e visualizza il risultato nell’area di testo;
  • pulisci pulisce l’area di testo.

Lo script Python è semplicissimo (tx.py, nella sub-dir py):

#!/usr/bin/python
# -*- coding: utf-8 -*-

import time

t0 = time.time()
time.sleep(10)
t1 = time.time()

print t1 - t0

Esegue una pausa di 10 secondi e scrive il tempo trascorso. La scritta destinata al terminale verrà intercettata da Gambas.

Ecco il codice Gambas:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
' Gambas class file

  Public progdir As String
  Public appname As String

Public Sub Form_Open()
  progdir = Application.Path
  appname = Application.Name
End

Public Sub chi_Click()
  area_ris.Text = progdir & "\n" & appname
End

Public Sub esegui_Click()
  Dim cmd As String, ris As String
  area_ris.Text = area_ris.Text & "\n\neseguo tx "
  area_ris.Refresh()
  Message("eseguo tx")
  cmd = "python " & progdir &/ "py/tx.py"
  Shell cmd Wait To ris
  area_ris.Text = area_ris.Text & ris
End

Public Sub pulisci_Click()
  area_ris.text = ""
End

Qualche osservazione:

  • le variabili sono locali, tranne quelle dichiarate Public, righe 3 e 4;
  • le inizializzazioni possono essere fatte nella Form_Open(), riga 6;
  • valgono gli usuali caratteri di escape, riga 12;
  • per concatenare i path c’è l’operatore &/, riga 20;
  • ho usato Shell, riga 21,  ma esiste anche Exec, non ho indagato sulle differenze, lasciate ccome compito a casa;
  • il parametro Wait, riga 21, sospende il programma fino alla fine del processo lanciato da Shell;
  • Message, una dialog box, alla riga 19 si è reso necessario per aggiornare l’area di testo, senza di esso la scritta di riga 17 e il refresh di riga 18 non producono alcun effetto;
  • la variabile ris contiene il testo scritto dal processo figlio, quello che sarebbe finito nel terminale; in pratica una pipe;
  • durante l’esecuzione della Shell la finestra dell’applicazione cambia colore, ingrigisce;
  • non ho riscontrato un aumento di risolse (memoria e CPU) apprezzabili.

Si userà? Forse, non dipende da me. E poi questo esempio è inusuale, trascurando il linguaggio di programmazione. A proposito, qui tutte le info che servono.

tipo

Non ho capito perché ma nella definizione del progetto ho dovuto selezionare QT altrimenti non riesco a inserire testo nei TextBox. Ma si sa che sono niubbo :mrgreen:

Posta un commento o usa questo indirizzo per il trackback.

Rispondi

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

Logo di WordPress.com

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

Google photo

Stai commentando usando il tuo account Google. 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 )

Connessione a %s...

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

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