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!).
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 ancheExec
, 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.
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