ค้นหาเว็บไซต์

Gtkdialog - สร้างอินเทอร์เฟซแบบกราฟิก (GTK+) และกล่องโต้ตอบโดยใช้เชลล์สคริปต์ใน Linux


Gtkdialog (หรือ gtkdialog) เป็นยูทิลิตี้โอเพ่นซอร์สที่ดีสำหรับการสร้างและสร้างอินเทอร์เฟซ GTK+ และกล่องโต้ตอบด้วยความช่วยเหลือของเชลล์สคริปต์ Linux และการใช้ไลบรารี GTK รวมถึงการใช้ไวยากรณ์ที่คล้าย xml ซึ่ง ทำให้ง่ายต่อการสร้างอินเทอร์เฟซโดยใช้ gtkdialog มันคล้ายกับเครื่องมือชื่อดังส่วนใหญ่ที่เรียกว่า Zenity มาก แต่มาพร้อมกับฟีเจอร์ที่ปรับแต่งได้ที่มีประโยชน์ ซึ่งช่วยให้คุณสร้างวิดเจ็ตมากมาย เช่น vbox, hbox, ปุ่ม, เฟรม, ข้อความ, เมนู และอื่นๆ อีกมากมายได้อย่างง่ายดาย

อ่านเพิ่มเติม : สร้างกล่องโต้ตอบกราฟิก GTK+ โดยใช้ Zenity

การติดตั้ง Gtkdialog ใน Linux

คุณสามารถดาวน์โหลด gtkdialog-0.8.3 (ซึ่งเป็นเวอร์ชันล่าสุด) หรือคุณสามารถใช้คำสั่ง wget แตกไฟล์ที่ดาวน์โหลดมา และรันคำสั่งต่อไปนี้เพื่อคอมไพล์จากแหล่งที่มา

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

ตอนนี้เรามาเริ่มสร้างกล่องกัน สร้างสคริปต์ “myprogram ” ใหม่ในโฟลเดอร์หลักของคุณ

โปรแกรมแรกของฉัน
cd
touch myprogram

ตอนนี้ให้เปิดไฟล์ “myprogram ” โดยใช้โปรแกรมแก้ไขข้อความที่คุณต้องการ และเพิ่มโค้ดต่อไปนี้ลงไป

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

บันทึกไฟล์และตั้งค่าการอนุญาตดำเนินการและรันตามที่แสดง

chmod 755 myprogram
./myprogram

นี่คือวิธีที่โปรแกรมแรกของคุณสร้างและดำเนินการโดยใช้ gtkdialog

ตอนนี้เราจะอธิบายโค้ดโดยย่อ

  1. #!/bin/bash: บรรทัดแรกของเชลล์สคริปต์ใดๆ ใช้เพื่อระบุเส้นทางเชลล์ bash
  2. GTKDIALOG=gtkdialog: ที่นี่เรากำหนดตัวแปรเพื่อใช้ในภายหลังเมื่อรันเชลล์สคริปต์ด้วย gtkdialog บรรทัดนี้จะต้องอยู่ในสคริปต์ทั้งหมดที่คุณสร้างโดยใช้ gtkdialog
  3. ส่งออก MAIN_DIALOG=: ตัวแปรอื่นที่เรากำหนดไว้ซึ่งจะมีไวยากรณ์ทั้งหมดสำหรับอินเทอร์เฟซของเรา คุณสามารถแทนที่ MAIN_DIALOG ด้วยชื่อใดก็ได้ที่คุณต้องการ แต่คุณต้องแทนที่ใน 4 บรรทัดสุดท้ายของสคริปต์ด้วย
  4. ชื่อหน้าต่าง: ฉันไม่คิดว่าจำเป็นต้องอธิบายโค้ดนี้ เราได้สร้างชื่อ ไอคอนเริ่มต้นสำหรับหน้าต่าง เราเลือกว่าจะปรับขนาดได้หรือไม่ และเรากำหนดความกว้างและ ความสูงที่เราต้องการ แน่นอนว่าตัวเลือกทั้งหมดนั้นเป็นรอง คุณสามารถใช้แท็ก ได้หากต้องการ
  5. : เราใช้แท็ก vbox เพื่อสร้างกล่องแนวตั้ง สิ่งสำคัญคือต้องสร้างแท็ก vbox เพื่อให้มีแท็กอื่นๆ เช่น hbox และปุ่ม เป็นต้น
  6. : ที่นี่เราสร้างกล่องแนวนอนโดยใช้แท็ก “space-fill ” และ “space-expand ” เป็นตัวเลือกในการขยาย hbox ผ่านหน้าต่าง
  7. <button>: สร้างปุ่มใหม่
  8. : นี่คือข้อความเริ่มต้นสำหรับปุ่ม เราปิดแท็กป้ายกำกับโดยใช้ แน่นอนว่าการปิดแท็กทั้งหมดที่เราใช้เป็นสิ่งสำคัญมาก
  9. : สิ่งนี้จะเกิดขึ้นเมื่อมีการคลิกปุ่ม คุณสามารถรันคำสั่งเชลล์ได้หากต้องการ หรือรันไฟล์อื่น ๆ ได้หากต้องการ มีการดำเนินการและสัญญาณอื่น ๆ อีกมากมายเช่นกัน อย่า อย่าลืมปิดโดยใช้
  10. : เพื่อปิดแท็กปุ่ม
  11. : เพื่อปิดแท็ก hbox
  12. : เพื่อปิดแท็กหน้าต่าง

4 บรรทัดสุดท้ายจะต้องอยู่ในเชลล์สคริปต์ทั้งหมดที่คุณสร้างโดยใช้ gtkdialog โดยจะเรียกใช้งานตัวแปร MAIN_DIALOG โดยใช้คำสั่ง gtkdialog พร้อมด้วยตัวเลือก –center เพื่อจัดกึ่งกลางหน้าต่าง ซึ่งมีประโยชน์มากจริงๆ

โปรแกรมที่สองของฉัน

ในทำนองเดียวกัน ให้สร้างไฟล์อื่นและเรียกว่า 'โปรแกรมที่สอง' และเพิ่มเนื้อหาทั้งหมดต่อไปนี้ลงไป

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

บันทึกไฟล์ ตั้งค่าการอนุญาตดำเนินการและรันตามที่แสดง

chmod 755 secondprogram
./secondprogram

ตอนนี้เราจะอธิบายโค้ดโดยย่อ

  1. เราสร้างวิดเจ็ต Combobox โดยใช้ แท็ก เป็นชื่อเริ่มต้นของตัวแปรที่รายการที่เลือกจะถูกจัดเก็บ เราใช้ตัวแปรนี้เพื่อพิมพ์รายการที่เลือกในภายหลังโดยใช้ echo
  2. เป็นตัวคั่นแนวนอน คุณสามารถตั้งค่าความกว้างเริ่มต้นได้โดยใช้ตัวเลือกคำขอความกว้าง
  3. เป็นปุ่ม OK ที่จะปิดหน้าต่างเมื่อคุณคลิกเท่านั้น ซึ่งมีประโยชน์มาก ดังนั้นเราจึงไม่จำเป็นต้องสร้างปุ่มแบบกำหนดเองเพื่อทำเช่นนั้น
ปรมาจารย์ที่สามของฉัน

สร้างไฟล์อื่นชื่อ 'thirdprogram' และเพิ่มโค้ดทั้งหมดลงไป

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

บันทึกไฟล์ ให้สิทธิ์ดำเนินการ และดำเนินการตามที่แสดง

chmod 755 thirdprogram
./thirdprogram

นี่คือคำอธิบายของโค้ดโดยละเอียดยิ่งขึ้น

  1. เราสร้างแท็บสมุดบันทึกสองแท็บโดยใช้ ตัวเลือก tab-label คือที่ที่คุณสามารถสร้างแท็บ gtkdialog จะสร้างแท็บขึ้นอยู่กับป้ายกำกับที่คุณป้อน ทุก จะถูกกำหนดให้เป็นแท็บ ดังนั้นแท็บแรกจะเริ่มต้นด้วย แรก แท็บที่สองเริ่มต้นด้วย ที่สอง
  2. เป็นวิดเจ็ตข้อความ เราใช้แท็ก
  3. แท็ก จะสร้างปุ่มหมุนใหม่ ตัวเลือก range-min คือค่าต่ำสุด และ range-max คือค่าสูงสุดสำหรับปุ่มหมุน ค่า range-value เป็นค่าเริ่มต้นสำหรับการหมุน ปุ่ม.
  4. เราให้ตัวแปร “myscale” แก่
  5. เราพิมพ์ค่าที่เลือกโดยใช้ตัวแปร echo และ $myscale สัญญาณเริ่มต้นสำหรับการดำเนินการที่นี่คือ "ค่าที่เปลี่ยนแปลง" ซึ่งช่วยให้เราทำสิ่งนั้นได้

นี่เป็นเพียงหน้าต่างตัวอย่าง คุณสามารถสร้างอินเทอร์เฟซที่ซับซ้อนมากขึ้นโดยใช้ gtkdialog ได้หากต้องการ คุณสามารถเรียกดูเอกสารอย่างเป็นทางการในเว็บไซต์ gtkdialog เพื่อดูแท็ก gtkdialog ทั้งหมดได้จากลิงก์ด้านล่าง

เอกสาร Gtkdialog

คุณเคยใช้ gtkdialog เพื่อสร้าง GUI สำหรับเชลล์สคริปต์ของคุณมาก่อนหรือไม่? หรือคุณเคยใช้ยูทิลิตี้ดังกล่าวเพื่อสร้างอินเทอร์เฟซหรือไม่? คุณคิดอย่างไรเกี่ยวกับเรื่องนี้?