Zoeken op website

Gtkdialog - Maak grafische (GTK+) interfaces en dialoogvensters met behulp van shell-scripts in Linux


Gtkdialog (of gtkdialog) is een handig open source-hulpprogramma voor het maken en bouwen van GTK+ interfaces en dialoogvensters met behulp van Linux-shellscripts en het gebruik van de GTK-bibliotheek, evenals het gebruik van een xml-achtige syntaxis, die maakt het eenvoudig om interfaces te maken met behulp van gtkdialog. Het lijkt veel op de meest bekende tool genaamd Zenity, maar het wordt geleverd met een aantal handige aanpasbare functies waarmee je eenvoudig veel widgets kunt maken, zoals vbox, hbox, knop, frame, tekst, menu en nog veel meer.

Lees ook: maak GTK+ grafische dialoogvensters met Zenity

Installatie van Gtkdialog onder Linux

Je kunt gtkdialog-0.8.3 downloaden (wat de nieuwste versie is) of je kunt ook de opdracht wget gebruiken, het gedownloade bestand uitpakken en de volgende opdrachten uitvoeren om vanaf de broncode te compileren.

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

Laten we nu beginnen met het maken van enkele vakken, maak een nieuw “mijnprogramma”-script in uw thuismap.

Mijn eerste programma
cd
touch myprogram

Open nu het bestand “mijnprogramma” met elke gewenste teksteditor en voeg de volgende code eraan toe.

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

Sla het bestand op, stel de uitvoerrechten in en voer het uit zoals weergegeven.

chmod 755 myprogram
./myprogram

Dit is hoe je eerste programma gemaakt en uitgevoerd werd met gtkdialog.

Nu zullen we de code in het kort uitleggen.

  1. #!/bin/bash: de eerste regel van elk shellscript. Deze wordt gebruikt om het bash-shellpad op te geven.
  2. GTKDIALOG=gtkdialog: Hier hebben we een variabele gedefinieerd om deze later te gebruiken bij het uitvoeren van het shellscript met gtkdialog. Deze regel moet voorkomen in alle scripts die u maakt met gtkdialog.
  3. export MAIN_DIALOG=: Een andere variabele die we hebben gedefinieerd en die alle syntaxis voor onze interface zal bevatten. U kunt MAIN_DIALOG vervangen door elke gewenste naam, maar u moet deze ook in de laatste 4 regels van het script vervangen.
  4. Venstertitel: ik denk niet dat deze code hoeft te worden uitgelegd. We hebben een titel gemaakt, een standaardpictogram voor het venster, we hebben gekozen of de grootte kan worden aangepast of niet, en we hebben de breedte en de breedte gedefinieerd. hoogte die we willen, natuurlijk zijn al deze opties secundair, je kunt gewoon de tag gebruiken als je wilt.
  5. : We gebruiken de vbox-tag om een verticale box te maken. Het is belangrijk om een vbox-tag te maken om andere tags te bevatten, zoals hbox en button, enz.
  6. : Hier hebben we een horizontaal kader gemaakt met behulp van de -tag. “space-fill” en “space-expand” zijn opties om de hbox door het venster uit te vouwen.
  7. <button>: Maak een nieuwe knop.
  8. : Dit is de standaardtekst voor de knop, we hebben de label-tag gesloten met , uiteraard is het erg belangrijk om alle tags die we gebruiken te sluiten.
  9. : Dit gebeurt er als op de knop wordt geklikt. Je kunt een shell-opdracht uitvoeren als je wilt, of een ander bestand uitvoeren als je wilt. Er zijn ook veel andere acties en signalen. Vergeet niet om het te sluiten met .
  10. : om de knoptag te sluiten.
  11. : om de hbox-tag te sluiten.
  12. : om de venstertag te sluiten.

De laatste 4 regels moeten ook voorkomen in alle shellscripts die je maakt met gtkdialog. Ze voeren de MAIN_DIALOG variabele uit met behulp van het gtkdialog commando met de –center optie om het venster te centreren, erg handig zelfs.

Mijn tweede programma

Maak op dezelfde manier een ander bestand en noem het 'tweede programma' en voeg de volgende volledige inhoud eraan toe.

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

Sla het bestand op, stel de uitvoerrechten in en voer het uit zoals weergegeven.

chmod 755 secondprogram
./secondprogram

Nu zullen we de code in het kort uitleggen.

  1. We maken een combobox-widget met behulp van , de -tag is de standaardnaam van de variabele waarin het gekozen item zal worden opgeslagen. We hebben deze variabele gebruikt om het geselecteerde item later af te drukken met behulp van echo.
  2. is een horizontaal scheidingsteken. U kunt er de standaardbreedte voor instellen met behulp van de optie width-request.
  3. is een OK-knop die het venster sluit zodra u erop klikt. Het is erg handig, dus we hoeven daarvoor geen aangepaste knop te maken.
Mijn derde programma

Maak nog een bestand met de naam ‘thirdprogram‘ en voeg daar de hele reeks code aan toe.

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

Sla het bestand op, verleen uitvoeringsrechten en activeer het zoals weergegeven.

chmod 755 thirdprogram
./thirdprogram

Hier volgt de uitleg van de code op meer gedetailleerde wijze.

  1. We hebben twee notitieboekjetabbladen gemaakt met , met de tablabeloptie kunt u tabbladen maken, gtkdialog maakt tabbladen aan, afhankelijk van de labels die u invoert, elke is gedefinieerd als een tabblad, dus het eerste tabblad begint met de eerste , het tweede tabblad begint met de tweede .
  2. is een tekstwidget, we hebben de tag
  3. De tag maakt een nieuwe draaiknop aan, de optie bereik-min is de minimumwaarde en bereik-max is de maximale waarde voor de draaiknop, bereik-waarde is de standaardwaarde voor de draai knop.
  4. We hebben een variabele “myscale” aan de gegeven.
  5. We hebben de geselecteerde waarde afgedrukt met behulp van echo en $myscale variabele, het standaardsignaal voor de actie hier is "waarde-gewijzigd", wat ons daarbij heeft geholpen.

Dit was slechts een voorbeeldvenster. Je kunt ingewikkelder interfaces maken met gtkdialog als je wilt. Je kunt door de officiële documentatie op de gtkdialog-website bladeren om alle gtkdialog-tags te bekijken via de onderstaande link.

Gtkdialog-documentatie

Heb je gtkdialog al eerder gebruikt om GUI's voor je shellscripts te maken? Of heb je een dergelijk hulpprogramma gebruikt om interfaces te maken? Wat denk jij ervan?