Ricerca nel sito web

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.

  1. #!/bin/bash: la prima riga di qualsiasi script di shell, viene utilizzata per specificare il percorso della shell bash.
  2. 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.
  3. 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.
  4. 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.
  5. : Utilizziamo il tag vbox per creare un box verticale, è importante creare un tag vbox per contenere altri tag come hbox e button, ecc.
  6. : Qui abbiamo creato un riquadro orizzontale utilizzando il tag , “space-fill ” e “space-expand ” sono opzioni per espandere l'hbox attraverso la finestra.
  7. : crea un nuovo pulsante.
  8. : Questo è il testo predefinito per il pulsante, abbiamo chiuso il tag label utilizzando , ovviamente è molto importante chiudere tutti i tag che utilizziamo.
  9. : 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 .
  10. : per chiudere il tag del pulsante.
  11. : per chiudere il tag hbox.
  12. : 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.

  1. 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.
  2. è un separatore orizzontale, puoi impostarne la larghezza predefinita utilizzando l'opzione width-request.
  3. è 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.

  1. 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 .
  2. è un widget di testo, abbiamo utilizzato il tag
  3. 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.
  4. Abbiamo dato una variabile “myscale” allo .
  5. 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?