Gtkdialog - Lag grafiske (GTK+) grensesnitt og dialogbokser ved å bruke Shell-skript i Linux


Gtkdialog (eller gtkdialog) er et pent verktøy med åpen kildekode for å lage og bygge GTK+-grensesnitt og dialogbokser ved hjelp av Linux-skallskript og bruk av GTK-bibliotek, i tillegg til å bruke en xml-lignende syntaks, som gjør det enkelt å lage grensesnitt ved hjelp av gtkdialog. Det ligner mye på det mest kjente verktøyet Zenity, men det kommer med noen nyttige tilpassbare funksjoner som lar deg enkelt lage mange widgets som vbox, hbox, knapp, ramme, tekst, meny og mye mer.

Les også : Lag GTK+ grafiske dialogbokser med Zenity

Installasjon av Gtkdialog i Linux

Du kan laste ned gtkdialog-0.8.3 (som er den nyeste versjonen), eller du kan også bruke wget-kommandoen, pakke ut den nedlastede filen og kjøre disse følgende kommandoene for å kompilere fra kilden.

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

La oss nå begynne å lage noen bokser, lag et nytt «mittprogram»-skript i hjemmemappen din.

Mitt første program
cd
touch myprogram

Åpne nå «mittprogram»-filen ved å bruke hvilken som helst tekstredigerer du ønsker, og legg til følgende kode til den.

#!/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 
------------

Lagre filen, og angi utførelsestillatelse og kjør den som vist.

chmod 755 myprogram
./myprogram

Dette er hvordan ditt første program ble opprettet og utført ved hjelp av gtkdialog.

Nå skal vi forklare koden kort.

  1. #!/bin/bash: Den første linjen i ethvert shell-skript, den brukes til å spesifisere bash-skallbanen.
  2. GTKDIALOG=gtkdialog: Her definerte vi en variabel for å bruke den senere når vi kjører shell-skriptet med gtkdialog, denne linjen må være i alle skript som du oppretter med gtkdialog.
  3. eksport MAIN_DIALOG=: En annen variabel vi definerte som vil inneholde all syntaks for grensesnittet vårt, du kan erstatte MAIN_DIALOG med hvilket navn du vil, men du må erstatte det også i de siste 4 linjene i skriptet.
  4. Vindutittel: Jeg tror ikke at denne koden trenger å bli forklart, vi opprettet en tittel, et standardikon for vinduet, vi velger om det kan endre størrelse eller ikke, og vi definerte bredden og høyden vi ønsker, selvfølgelig er alle disse alternativene sekundære, du kan bare bruke -taggen hvis du vil.
  5. : Vi bruker vbox-taggen for å lage en vertikal boks, det er viktig å lage en vbox-tag for å inneholde andre tagger som hbox og button osv.
  6. : Her laget vi en horisontal boks ved å bruke -taggen, "space-fill " og "space-expand " er alternativer for å utvide hboxen gjennom vinduet.
  7. <button>: Opprett en ny knapp.
  8. : Dette er standardteksten for knappen, vi lukket label-taggen med , selvfølgelig er det veldig viktig å lukke alle taggene som vi bruker.
  9. : Dette skjer når knappen klikkes, du kan kjøre en shell-kommando hvis du vil eller utføre en hvilken som helst annen fil hvis du vil, det er mange andre handlinger og signaler også, ikke ikke glem å lukke den med .
  10. : For å lukke knappekoden.
  11. : For å lukke hbox-taggen.
  12. : For å lukke vindustaggen.

De siste 4 linjene må også være i alle shell-skript som du oppretter ved hjelp av gtkdialog, de utfører MAIN_DIALOG-variabelen ved å bruke gtkdialog-kommandoen med –center-alternativet for å sentrere vinduet, veldig nyttig faktisk.

Mitt andre program

På samme måte oppretter du en annen fil og kaller den som «andre program» og legger til hele innholdet nedenfor.

#!/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

Lagre filen, angi kjøretillatelse på den og kjør den som vist.

chmod 755 secondprogram
./secondprogram

Nå skal vi forklare koden kort.

  1. Vi lager en combobox-widget ved å bruke , -taggen er standardnavnet på variabelen som det valgte elementet vil bli lagret i, vi brukte denne variabelen til å skrive ut det valgte elementet senere ved å bruke ekko.
  2. er en horisontal skilletegn, du kan angi standardbredden for den ved å bruke breddeforespørselsalternativet.
  3. er en OK-knapp som lukker vinduet akkurat når du klikker på den, den er veldig nyttig, så vi trenger ikke lage en egendefinert knapp for å gjøre det.
Min tredje prgoram

Opprett en annen fil kalt 'tredjeprogram' og legg til hele haugen med kode til den.

#!/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

Lagre filen, gi utføringstillatelse og avfyr den som vist.

chmod 755 thirdprogram
./thirdprogram

Her er forklaringen av kode på mer detaljert måte.

  1. Vi opprettet to notatbok-faner ved å bruke , tab-label-alternativet er der du kan lage faner, gtkdialog vil lage faner avhengig av etikettene du skriver inn, hver er definert som en fane, så den første fanen starter med første , den andre fanen starter med den andre .
  2. er en tekstwidget, vi brukte
  3. -taggen vil opprette en ny spinnknapp, range-min-alternativet er minimumsverdien, og range-max er maksimumsverdien for spinnknappen, range-value er standardverdien for spinn knapp.
  4. Vi ga en variabel "myscale" til .
  5. Vi skrev ut den valgte verdien ved å bruke ekko og $myscale-variabelen, standardsignalet for handlingen her er "verdi-endret" som hjalp oss med å gjøre det.

Dette var bare et eksempelvindu, du kan lage mer kompliserte grensesnitt ved å bruke gtkdialog hvis du vil, du kan bla gjennom den offisielle dokumentasjonen på gtkdialog-nettstedet for å se alle gtkdialog-taggene fra lenken nedenfor.

Gtkdialog dokumentasjon

Har du brukt gtkdialog til å lage GUIer for shell-skriptene dine før? Eller har du brukt et slikt verktøy for å lage grensesnitt? Hva synes du om det?