Gtkdialog - Linux'ta Kabuk Komut Dosyalarını Kullanarak Grafiksel (GTK+) Arayüzler ve İletişim Kutuları Oluşturun


Gtkdialog (veya gtkdialog), Linux kabuk komut dosyalarının yardımıyla ve GTK kitaplığının yanı sıra xml benzeri bir sözdizimi kullanarak GTK+ Arayüzleri ve İletişim Kutuları oluşturmak ve oluşturmak için kullanılan açık kaynaklı şık bir yardımcı programdır. gtkdialog kullanarak arayüz oluşturmayı kolaylaştırır. Zenity adı verilen en ünlü araca çok benzer, ancak vbox, hbox, düğme, çerçeve, metin, menü ve çok daha fazlası gibi birçok widget'ı kolayca oluşturmanıza olanak tanıyan bazı kullanışlı özelleştirilebilir özelliklerle birlikte gelir.

Ayrıca Oku : Zenity'yi kullanarak GTK+ Grafik İletişim Kutuları Oluşturun

Linux'ta Gtkdialog kurulumu

gtkdialog-0.8.3'ü (en son sürümdür) indirebilir veya ayrıca wget komutunu kullanabilir, indirilen dosyayı paketinden çıkarabilir ve kaynaktan derlemek için aşağıdaki komutları çalıştırabilirsiniz.

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

Şimdi bazı kutular oluşturmaya başlayalım, ana klasörünüzde yeni bir “programım” betiği oluşturalım.

İlk Programım
cd
touch myprogram

Şimdi istediğiniz herhangi bir metin düzenleyiciyi kullanarak “programım” dosyasını açın ve dosyaya aşağıdaki kodu ekleyin.

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

Dosyayı kaydedin, yürütme iznini ayarlayın ve gösterildiği gibi çalıştırın.

chmod 755 myprogram
./myprogram

İlk programınız gtkdialog kullanılarak bu şekilde yaratıldı ve yürütüldü.

Şimdi kodu kısaca açıklayacağız.

  1. #!/bin/bash: Herhangi bir kabuk betiğinin ilk satırı, bash kabuk yolunu belirtmek için kullanılır.
  2. GTKDIALOG=gtkdialog: Burada daha sonra kabuk betiğini gtkdialog ile çalıştırırken kullanmak üzere bir değişken tanımladık, bu satırın gtkdialog kullanarak oluşturduğunuz tüm betiklerde olması gerekir.
  3. export MAIN_DIALOG=: Arayüzümüz için tüm sözdizimini içerecek olan tanımladığımız bir diğer değişken, MAIN_DIALOG'u istediğiniz herhangi bir adla değiştirebilirsiniz, ancak onu da betiğin son 4 satırında değiştirmeniz gerekir.
  4. Pencere Başlığı: Bu kodun açıklanmasına gerek yok diye düşünüyorum, pencere için bir başlık, varsayılan bir simge oluşturduk, yeniden boyutlandırılıp boyutlandırılamayacağını seçiyoruz ve genişliğini ve tanımını yaptık. istediğimiz yükseklik, elbette tüm bu seçenekler ikincildir, isterseniz sadece etiketini kullanabilirsiniz.
  5. : vbox etiketini dikey kutu oluşturmak için kullanıyoruz, hbox ve düğme vb. diğer etiketleri içermesi için vbox etiketi oluşturmak önemlidir.
  6. : Burada etiketini kullanarak yatay bir kutu oluşturduk, “space-fill” ve “space-expand” hbox'u pencere boyunca genişletme seçenekleridir.
  7. <button>: Yeni bir düğme oluşturun.
  8. : Butonun varsayılan metnidir, kullanarak etiket etiketini kapattık, elbette kullandığımız tüm etiketlerin kapatılması çok önemli.
  9. : Düğmeye tıklandığında olan budur, isterseniz bir kabuk komutunu çalıştırabilirsiniz, isterseniz başka bir dosyayı çalıştırabilirsiniz, başka birçok eylem ve sinyal de vardır, yapma' kullanarak kapatmayı unutmayın.
  10. : Düğme etiketini kapatmak için.
  11. : hbox etiketini kapatmak için.
  12. : Pencere etiketini kapatmak için.

Son 4 satır, gtkdialog kullanarak oluşturduğunuz tüm kabuk komut dosyalarında da bulunmalıdır; bunlar, pencereyi ortalamak için gtkdialog komutunu –center seçeneğiyle kullanarak MAIN_DIALOG değişkenini çalıştırır, aslında çok faydalıdır.

İkinci Programım

Benzer şekilde, başka bir dosya oluşturun ve onu 'ikinciprogram' olarak adlandırın ve aşağıdaki içeriğin tamamını bu dosyaya ekleyin.

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

Dosyayı kaydedin, yürütme iznini ayarlayın ve gösterildiği gibi çalıştırın.

chmod 755 secondprogram
./secondprogram

Şimdi kodu kısaca açıklayacağız.

  1. kullanarak bir açılan kutu widget'ı oluşturuyoruz, etiketi, seçilen öğenin depolanacağı değişkenin varsayılan adıdır, bu değişkeni, seçilen öğeyi daha sonra echo kullanarak yazdırmak için kullandık.
  2. yatay bir ayırıcıdır, genişlik isteği seçeneğini kullanarak bunun için varsayılan genişliği ayarlayabilirsiniz.
  3. , tıkladığınızda pencereyi kapatacak bir Tamam düğmesidir, çok kullanışlıdır, dolayısıyla bunu yapmak için özel bir düğme oluşturmamıza gerek yoktur.
Üçüncü Programım

'üçüncü program' adında başka bir dosya oluşturun ve kodun tamamını ona ekleyin.

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

Dosyayı kaydedin, yürütme izni verin ve gösterildiği gibi çalıştırın.

chmod 755 thirdprogram
./thirdprogram

Burada kodun daha detaylı anlatımı var.

  1. kullanarak iki not defteri sekmesi oluşturduk, sekme-etiket seçeneği sekme oluşturabileceğiniz yerdir, gtkdialog girdiğiniz etiketlere bağlı olarak sekmeler oluşturacaktır, her bir sekme olarak tanımlanır, dolayısıyla ilk sekme ilk , ikinci sekme ikinci ile başlar.
  2. bir metin widget'ıdır, varsayılan metni ayarlamak için
  3. etiketi yeni bir döndürme düğmesi oluşturacaktır, range-min seçeneği minimum değerdir ve range-max döndürme düğmesi için maksimum değerdir, range-value döndürme için varsayılan değerdir düğme.
  4. ’a “myscale” değişkenini verdik.
  5. Seçilen değeri echo ve $myscale değişkenini kullanarak yazdırdık, buradaki eylemin varsayılan sinyali "value-changed"dir ve bu da bunu yapmamıza yardımcı oldu.

Bu sadece örnek bir pencereydi, isterseniz gtkdialog'u kullanarak daha karmaşık arayüzler oluşturabilirsiniz, aşağıdaki bağlantıdan tüm gtkdialog etiketlerini görüntülemek için gtkdialog web sitesindeki resmi belgelere göz atabilirsiniz.

Gtkdialog Belgeleri

Daha önce kabuk komut dosyalarınız için GUI'ler oluşturmak amacıyla gtkdialog'u kullandınız mı? Veya arayüz oluşturmak için böyle bir yardımcı program kullandınız mı? Bu konu hakkında ne düşünüyorsun?