Gtkdialog: crea interfacce grafiche (GTK+) e finestre di dialogo utilizzando script di shell in Linux
Gtkdialog (o gtkdialog) è un'elegante utility open source per creare e costruire interfacce e finestre di dialogo GTK+ con l'aiuto di script di shell Linux e utilizzando la libreria GTK, nonché utilizzando una sintassi simile a xml, che semplifica la creazione di interfacce utilizzando gtkdialog. È molto simile allo strumento più famoso chiamato Zenity, ma include alcune utili funzionalità personalizzabili che ti consentono di creare facilmente molti widget come vbox, hbox, pulsanti, cornici, testo, menu e molto altro.
Leggi anche: Crea finestre di dialogo grafiche GTK+ utilizzando Zenity
Installazione di Gtkdialog in Linux
Puoi scaricare gtkdialog-0.8.3 (che è l'ultima versione) oppure puoi anche utilizzare il comando wget, decomprimere il file scaricato ed eseguire questi comandi seguenti per compilare dal sorgente.
sudo apt-get install build-essential [on Debian based systems]
yum install gcc make gcc-c++ [on RedHat based systems]
wget https://gtkdialog.googlecode.com/files/gtkdialog-0.8.3.tar.gz
tar -xvf gtkdialog-0.8.3.tar.gz
cd gtkdialog-0.8.3/
./configure
make
sudo make install
Ora iniziamo a creare alcune caselle, crea un nuovo script "myprogram" nella tua cartella home.
Il mio primo programma
cd
touch myprogram
Ora apri il file "myprogram" utilizzando l'editor di testo che preferisci e aggiungi il seguente codice.
#!/bin/bash
GTKDIALOG=gtkdialog
export MAIN_DIALOG='
<window title="My First Program" icon-name="gtk-about" resizable="true" width-request="300" height-request="310">
<vbox>
<hbox space-fill="true" space-expand="true">
<button>
<label>Welcome to TecMint.com Home!</label>
<action>echo "Welcome to TecMint.com Home!"</action>
</button>
</hbox>
</vbox>
</window>
'
case $1 in
-d | --dump) echo "$MAIN_DIALOG" ;;
*) $GTKDIALOG --program=MAIN_DIALOG --center ;;
esac
------------
Salvare il file, impostare il permesso di esecuzione ed eseguirlo come mostrato.
chmod 755 myprogram
./myprogram
Ecco come è stato creato ed eseguito il tuo primo programma utilizzando gtkdialog.
Ora spiegheremo brevemente il codice.
- #!/bin/bash: la prima riga di qualsiasi script di shell, viene utilizzata per specificare il percorso della shell bash.
- GTKDIALOG=gtkdialog: qui abbiamo definito una variabile da utilizzare successivamente durante l'esecuzione dello script di shell con gtkdialog, questa riga deve essere presente in tutti gli script creati utilizzando gtkdialog.
- export MAIN_DIALOG=: un'altra variabile che abbiamo definito che conterrà tutta la sintassi per la nostra interfaccia, puoi sostituire MAIN_DIALOG con qualsiasi nome tu voglia, ma devi sostituirlo anche nelle ultime 4 righe dello script.
- Titolo finestra: non credo che questo codice debba essere spiegato, abbiamo creato un titolo, un'icona predefinita per la finestra, scegliamo se fosse ridimensionabile o meno, e abbiamo definito la larghezza e altezza che vogliamo, ovviamente tutte queste opzioni sono secondarie, puoi semplicemente usare il tag
se lo desideri. : Utilizziamo il tag vbox per creare un box verticale, è importante creare un tag vbox per contenere altri tag come hbox e button, ecc. : Qui abbiamo creato un riquadro orizzontale utilizzando il tag , “space-fill ” e “space-expand ” sono opzioni per espandere l'hbox attraverso la finestra. : crea un nuovo pulsante. - : Questo è il testo predefinito per il pulsante, abbiamo chiuso il tag label utilizzando , ovviamente è molto importante chiudere tutti i tag che utilizziamo.
: Questo cosa succede quando si fa clic sul pulsante, puoi eseguire un comando shell se vuoi o eseguire qualsiasi altro file se vuoi, ci sono anche molte altre azioni e segnali, non farlo Non dimenticare di chiuderlo usando . - : per chiudere il tag del pulsante.
- : per chiudere il tag hbox.
- : per chiudere il tag della finestra.
Le ultime 4 righe devono essere presenti anche in tutti gli script di shell che crei utilizzando gtkdialog, eseguono la variabile MAIN_DIALOG utilizzando il comando gtkdialog con l'opzione –center per centrare la finestra, molto utile in effetti.
Il mio secondo programma
Allo stesso modo, crea un altro file e chiamalo "secondo programma" e aggiungivi l'intero contenuto seguente.
#!/bin/bash
GTKDIALOG=gtkdialog
export MAIN_DIALOG='
<window title="My Second Program" icon-name="gtk-about" resizable="true" width-request="250" height-request="150">
<vbox>
<hbox space-fill="true">
<combobox>
<variable>myitem</variable>
<item>First One</item>
<item>Second One</item>
<item>Third One</item>
</combobox>
</hbox>
<hbox>
<button>
<label>Click Me</label>
<action>echo "You choosed $myitem"</action>
</button>
</hbox>
<hseparator width-request="240"></hseparator>
<hbox>
<button ok></button>
</hbox>
</vbox>
</window>
'
case $1 in
-d | --dump) echo "$MAIN_DIALOG" ;;
*) $GTKDIALOG --program=MAIN_DIALOG --center ;;
esac
Salvare il file, impostare il permesso di esecuzione su di esso ed eseguirlo come mostrato.
chmod 755 secondprogram
./secondprogram
Ora spiegheremo brevemente il codice.
- Creiamo un widget combobox utilizzando
, il tag è il nome predefinito della variabile in cui verrà memorizzato l'elemento scelto, abbiamo utilizzato questa variabile per stampare successivamente l'elemento selezionato utilizzando echo. è un separatore orizzontale, puoi impostarne la larghezza predefinita utilizzando l'opzione width-request. - è un pulsante OK che chiuderà la finestra proprio quando fai clic su di esso, è molto utile quindi non abbiamo bisogno di creare un pulsante personalizzato per farlo.
Il mio terzo programma
Crea un altro file chiamato 'terzoprogramma' e aggiungici tutto il codice.
#!/bin/bash
GTKDIALOG=gtkdialog
export MAIN_DIALOG='
<window title="My Second Program" icon-name="gtk-about" resizable="true" width-request="250" height-request="150">
<notebook tab-label="First | Second|">
<vbox>
<hbox space-fill="true">
<combobox>
<variable>myitem</variable>
<item>First One</item>
<item>Second One</item>
<item>Third One</item>
</combobox>
</hbox>
<hbox>
<button>
<label>Click Me</label>
<action>echo "You choosed $myitem"</action>
</button>
</hbox>
<hseparator width-request="240"></hseparator>
<hbox>
<button ok></button>
</hbox>
</vbox>
<vbox>
<hbox space-fill="true">
<text>
<label>Spinbutton </label>
</text>
</hbox>
<hbox space-fill="true" space-expand="true">
<spinbutton range-min="0" range-max="100" range-value="4">
<variable>myscale</variable>
<action>echo $myscale</action>
</spinbutton>
</hbox>
<hbox>
<button ok></button>
</hbox>
</vbox>
</notebook>
</window>
'
case $1 in
-d | --dump) echo "$MAIN_DIALOG" ;;
*) $GTKDIALOG --program=MAIN_DIALOG --center ;;
esac
Salvare il file, concedere l'autorizzazione di esecuzione e avviarlo come mostrato.
chmod 755 thirdprogram
./thirdprogram
Qui, la spiegazione del codice in modo più dettagliato.
- Abbiamo creato due schede del notebook utilizzando
, l'opzione tab-label è dove puoi creare schede, gtkdialog creerà schede a seconda delle etichette inserite, ogni è definito come una scheda, quindi la prima scheda inizia con primo , la seconda scheda inizia con il secondo . è un widget di testo, abbiamo utilizzato il tag - Il tag
creerà un nuovo pulsante di selezione, l'opzione range-min è il valore minimo e range-max è il valore massimo per il pulsante di selezione, range-value è il valore predefinito per la rotazione pulsante. - Abbiamo dato una variabile “myscale” allo
. - Abbiamo stampato il valore selezionato utilizzando echo e la variabile $myscale, il segnale predefinito per l'azione qui è "valore modificato", il che ci ha aiutato a farlo.
Questa era solo una finestra di esempio, puoi creare interfacce più complicate utilizzando gtkdialog se lo desideri, puoi sfogliare la documentazione ufficiale nel sito web gtkdialog per visualizzare tutti i tag gtkdialog dal link sottostante.
Documentazione di Gtkdialog
Hai già utilizzato gtkdialog per creare GUI per i tuoi script di shell? Oppure hai utilizzato una di queste utilità per creare interfacce? Cosa ne pensi?