Weboldal keresés

Gtkdialog - Grafikus (GTK+) interfészek és párbeszédpanelek létrehozása Shell Scriptek használatával Linuxban


A Gtkdialog (vagy gtkdialog) egy nyílt forráskódú remek segédprogram GTK+ interfészek és párbeszédpanelek létrehozására és létrehozására Linux shell szkriptek segítségével és GTK könyvtár használatával, valamint xml-szerű szintaxis használatával, amely megkönnyíti a felületek létrehozását a gtkdialog segítségével. Sokban hasonlít a leghíresebb Zenity nevű eszközre, de néhány hasznos testreszabható funkcióval rendelkezik, amelyek segítségével könnyedén létrehozhat számos widgetet, például vbox, hbox, gomb, keret, szöveg, menü és még sok más.

Olvassa el még : Hozzon létre GTK+ grafikus párbeszédpaneleket a Zenity segítségével

A Gtkdialog telepítése Linux alatt

Letöltheti a gtkdialog-0.8.3-at (amely a legújabb verzió), vagy használhatja a wget parancsot, csomagolja ki a letöltött fájlt, és futtassa a következő parancsokat a forrásból való fordításhoz.

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

Most kezdjük el néhány doboz létrehozását, hozzon létre egy új „myprogram” szkriptet a saját mappájában.

Első programom
cd
touch myprogram

Most nyissa meg a „myprogram ” fájlt bármely kívánt szövegszerkesztővel, és adja hozzá a következő kódot.

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

Mentse el a fájlt, állítsa be a végrehajtási engedélyt, és futtassa az ábrán látható módon.

chmod 755 myprogram
./myprogram

Így jött létre és futott le az első programod a gtkdialog segítségével.

Most röviden elmagyarázzuk a kódot.

  1. #!/bin/bash: Bármely shell-szkript első sora, a bash shell elérési útjának meghatározására szolgál.
  2. GTKDIALOG=gtkdialog: Itt definiáltunk egy változót, amelyet később használhatunk a shell szkript gtkdialog segítségével történő végrehajtása során. Ennek a sornak minden olyan szkriptben szerepelnie kell, amelyet a gtkdialog segítségével hoz létre.
  3. export MAIN_DIALOG=: Egy másik változó, amit definiáltunk, amely tartalmazza a felületünk összes szintaxisát. A MAIN_DIALOG tetszőleges névre cserélheti, de a szkript utolsó 4 sorában is le kell cserélnie.
  4. Ablak címe: Szerintem ezt a kódot nem kell magyarázni, létrehoztunk egy címet, egy alapértelmezett ikont az ablakhoz, kiválasztjuk, hogy átméretezhető-e vagy sem, és meghatároztuk a szélességet és magasságot szeretnénk, természetesen ezek a lehetőségek másodlagosak, csak használhatja a címkét, ha akarja.
  5. : A vbox címkét függőleges doboz létrehozására használjuk, fontos, hogy vbox címkét hozzunk létre, hogy más címkéket, például hbox és button stb.
  6. : Itt egy vízszintes mezőt hoztunk létre a címkével, a „space-fill” és a „space-expand” opciók a hbox ablakon keresztül történő kibontására szolgálnak.
  7. <button>: Új gomb létrehozása.
  8. : Ez a gomb alapértelmezett szövege, a címke címkét a segítségével zártuk le, természetesen nagyon fontos, hogy minden általunk használt címkét bezárjunk.
  9. : Ez történik, ha a gombra kattintanak, futtathat shell parancsot, ha akar, vagy bármilyen más fájlt, ha akar, sok más művelet és jel is van, nem ne felejtse el bezárni a segítségével.
  10. : A gombcímke bezárása.
  11. : A hbox címke bezárása.
  12. : Az ablakcímke bezárása.

Az utolsó 4 sornak a gtkdialog segítségével létrehozott összes shell-szkriptben is szerepelnie kell. Ezek a MAIN_DIALOG változót a gtkdialog paranccsal hajtják végre, a –center kapcsolóval az ablak középre állításához, ami valójában nagyon hasznos.

Második programom

Hasonló módon hozzon létre egy másik fájlt, nevezze el „második programnak”, és adja hozzá a következő teljes tartalmat.

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

Mentse el a fájlt, állítsa be a végrehajtási engedélyt, és futtassa a képen látható módon.

chmod 755 secondprogram
./secondprogram

Most röviden elmagyarázzuk a kódot.

  1. A segítségével létrehozunk egy combobox widgetet, a tag annak a változónak az alapértelmezett neve, amelyben a kiválasztott elem tárolódik, ezt a változót használtuk a kiválasztott elem későbbi kinyomtatására az echo segítségével.
  2. A egy vízszintes elválasztó, amelyhez beállíthatja az alapértelmezett szélességet a width-request opcióval.
  3. A egy OK gomb, amely bezárja az ablakot, amikor rákattint. Nagyon hasznos, ezért nem kell ehhez egyéni gombot létrehoznunk.
Harmadik Prgoram

Hozzon létre egy másik fájlt 'harmadik program' néven, és adja hozzá a teljes kódcsomagot.

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

Mentse el a fájlt, adjon végrehajtási engedélyt, és indítsa el a képen látható módon.

chmod 755 thirdprogram
./thirdprogram

Itt a kód részletesebb magyarázata.

  1. Két jegyzetfüzet lapot hoztunk létre a segítségével, a tab-label opció az, ahol lapokat hozhat létre, a gtkdialog a beírt címkéktől függően hoz létre tabulátorokat, minden lapként van definiálva, tehát az első lap a következővel kezdődik első , a második lap a második -val kezdődik.
  2. A egy szöveges widget, a
  3. A címke új pörgetési gombot hoz létre, a tartomány-min opció a minimális érték, a tartomány-max pedig a pörgetés gomb maximális értéke, a tartomány-érték pedig a pörgetés alapértelmezett értéke gomb.
  4. A -nak egy „myscale” változót adtunk.
  5. A kiválasztott értéket az echo és a $myscale változó segítségével nyomtattuk ki, a művelet alapértelmezett jele itt az „érték-módosított”, ami segített ebben.

Ez csak egy példa ablak volt, a gtkdialog segítségével bonyolultabb felületeket is létrehozhat, ha akar, a hivatalos dokumentációt a gtkdialog webhelyen böngészheti az összes gtkdialog tag megtekintéséhez az alábbi linkről.

Gtkdialog dokumentáció

Használta már a gtkdialog-ot grafikus felhasználói felületek létrehozására a shell szkriptekhez? Vagy használtál már valamilyen ilyen segédprogramot interfész létrehozásához? Mit gondolsz róla?