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

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


GNU Linux ระบบปฏิบัติการที่สร้างขึ้นบน เคอร์เนล ที่ทรงพลังมากที่เรียกว่า Linux Linux มีชื่อเสียงในด้านการทำงานของบรรทัดคำสั่ง ด้วยการประดิษฐ์ Linux ในชีวิตประจำวันและการประมวลผลบนเดสก์ท็อป nix ยังคงไม่ลำเอียงต่อ command-Line อีกต่อไป มันเป็นแบบกราฟิกที่เท่าเทียมกัน และการพัฒนาแอปพลิเคชันแบบกราฟิกก็ไม่ใช่งานที่ยากอีกต่อไป

ในบทความนี้ เราจะพูดถึงการสร้างและการทำงานของกล่องโต้ตอบกราฟิกอย่างง่ายโดยใช้แอปพลิเคชัน GTK+ ที่เรียกว่า “Zenity

เซนิตี้คืออะไร?

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

มีทางเลือกอื่นๆ แต่ไม่มีอะไรเทียบได้กับความเรียบง่ายของ Zenity โดยเฉพาะเมื่อคุณไม่ต้องการการเขียนโปรแกรมที่ซับซ้อน Zenity เครื่องมือที่คุณต้องมี

คุณสมบัติเซนิตี้

  1. ซอฟต์แวร์ฟอสส์
  2. แอปพลิเคชันข้ามแพลตฟอร์ม
  3. อนุญาตการดำเนินการกล่องโต้ตอบ GTK+
  4. เครื่องมือบรรทัดคำสั่ง
  5. รองรับการเขียนสคริปต์เชลล์

ประโยชน์

  1. การสร้าง GUI อย่างง่าย
  2. คุณสมบัติน้อยกว่าเครื่องมือที่ซับซ้อนอื่น ๆ
  3. เปิดใช้งานเชลล์สคริปต์เพื่อโต้ตอบกับผู้ใช้ GUI
  4. การสร้างกล่องโต้ตอบอย่างง่ายสามารถทำได้สำหรับการโต้ตอบกับผู้ใช้แบบกราฟิก

เนื่องจาก Zenity พร้อมใช้งานสำหรับแพลตฟอร์มหลักที่รู้จักทั้งหมด และขึ้นอยู่กับไลบรารี GTK+ โปรแกรม Zenity จึงสามารถย้ายไปยัง/จากแพลตฟอร์มอื่นได้

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

Zentity ได้รับการติดตั้งโดยค่าเริ่มต้นหรือพร้อมใช้งานในพื้นที่เก็บข้อมูลของ Standard Linux ส่วนใหญ่ในปัจจุบัน คุณสามารถตรวจสอบว่ามีการติดตั้งลงในเครื่องของคุณหรือไม่โดยดำเนินการคำสั่งต่อไปนี้

ravisaive@tecmint:~$ zenity --version 

3.8.0
ravisaive@tecmint:~$ whereis zenity 

zenity: /usr/bin/zenity /usr/bin/X11/zenity /usr/share/zenity /usr/share/man/man1/zenity.1.gz

หากไม่ได้ติดตั้ง คุณสามารถติดตั้งได้โดยใช้คำสั่ง Apt หรือ Yum ดังที่แสดงด้านล่าง

ravisaive@tecmint:~$ sudo apt-get install zenity		[on Debian based systems]

root@tecmint:~# yum install zenity				[on RedHat based systems]

ยิ่งไปกว่านั้น คุณยังสามารถสร้างมันจากไฟล์ต้นฉบับ ดาวน์โหลดแพ็คเกจซอร์ส Zenity ล่าสุด (เช่น เวอร์ชันปัจจุบัน 3.8) โดยใช้ลิงก์ต่อไปนี้

  1. http://ftp.gnome.org/pub/gnome/sources/zenity/

กล่องโต้ตอบพื้นฐานของ Zenity

กล่องโต้ตอบพื้นฐานบางส่วนของ Zenity ซึ่งสามารถเรียกใช้ได้โดยตรงจากบรรทัดคำสั่ง

1. แล้วกล่องโต้ตอบปฏิทินด่วนล่ะ
root@tecmint:~# zenity --calendar

2. กล่องโต้ตอบข้อผิดพลาด
root@tecmint:~# zenity --error

3. กล่องโต้ตอบการป้อนข้อความทั่วไป
root@tecmint:~# zenity --entry

4. กล่องโต้ตอบข้อมูล
root@tecmint:~# zenity --info

5. กล่องโต้ตอบคำถาม
root@tecmint:~# zenity --question

6. แถบความคืบหน้า
root@tecmint:~# zenity --progress

7. กล่องโต้ตอบมาตราส่วน
root@tecmint:~# zenity --scale

8. กล่องโต้ตอบรหัสผ่าน
root@tecmint:~# zenity --password

9. กล่องโต้ตอบแบบฟอร์ม
root@tecmint:~# zenity --forms

10. เกี่ยวกับกล่องโต้ตอบ
root@tecmint:~# zenity --about

สร้างกล่องโต้ตอบสคริปต์เชลล์

ตอนนี้เราจะมาพูดถึงการสร้าง Zenity Dialog โดยใช้เชลล์สคริปต์ง่ายๆ ที่นี่ แม้ว่าเราจะสามารถสร้างกล่องโต้ตอบเดียวได้โดยดำเนินการคำสั่ง Zenity โดยตรงจากเชลล์ (ดังที่เราทำข้างต้น) แต่เราไม่สามารถเชื่อมโยงกล่องโต้ตอบสองกล่องเพื่อให้ได้ผลลัพธ์ที่มีความหมายได้

แล้วกล่องโต้ตอบโต้ตอบที่รับข้อมูลจากคุณและแสดงผลลัพธ์ล่ะ

#!/bin/bash 
first=$(zenity --title="Your's First Name" --text "What is your first name?" --entry) 
zenity --info --title="Welcome" --text="Mr./Ms. $first" 
last=$(zenity --title="Your's Last Name" --text "$first what is your last name?" --entry) 
zenity --info --title="Nice Meeting You" --text="Mr./Ms. $first $last"

บันทึกลงใน 'anything.sh' (ตามอัตภาพ) และอย่าลืมทำให้สามารถเรียกใช้งานได้ ตั้งค่าการอนุญาต 755 บนไฟล์ anything.sh และเรียกใช้สคริปต์

root@tecmint:~# chmod 755 anything.sh 
root@tecmint:~# sh anything.sh

เกี่ยวกับคำอธิบายสคริปต์

Shebang ธรรมดาหรือที่เรียกว่า hashbang

#!/bin/bash

ในบรรทัดด้านล่าง 'อันดับแรก' คือตัวแปรและค่าของตัวแปรถูกสร้างขึ้น ณ รันไทม์

    1. '–entry' หมายถึง zenity ถูกขอให้สร้างกล่องรายการข้อความ
    2. '– title=' กำหนดชื่อของกล่องข้อความที่สร้างขึ้น
    3. '—text=' กำหนดข้อความที่มีอยู่ในช่องป้อนข้อความ
first=$(zenity --title="Your's First Name" --text "What is your first name?" --entry)

ไฟล์สคริปต์ด้านล่างบรรทัดนี้ใช้สำหรับสร้างกล่องโต้ตอบข้อมูล (–ข้อมูล) โดยมีชื่อ “ยินดีต้อนรับ” และข้อความ “Mr./Ms.first ”

zenity --info --title="Welcome" --text="Mr./Ms. $first"

บรรทัดของสคริปต์นี้คล้ายกับบรรทัดหมายเลขสองของสคริปต์ ยกเว้นที่นี่มีการกำหนดตัวแปรใหม่ 'สุดท้าย'

last=$(zenity --title="Your's Last Name" --text "$first what is your last name?" --entry)

บรรทัดสุดท้ายของสคริปต์นี้คล้ายกับบรรทัดที่สามของสคริปต์อีกครั้ง และจะสร้างกล่องโต้ตอบข้อมูลซึ่งมีทั้งตัวแปร '$first' และ '$last'

zenity --info --title="Nice Meeting You" --text="Mr./Ms. $first $last"

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการสร้างกล่องโต้ตอบแบบกำหนดเองโดยใช้เชลล์สคริปต์ โปรดไปที่หน้าอ้างอิงต่อไปนี้ Zenity

  1. https://help.gnome.org/users/zenity/stable/

ในบทความถัดไป เราจะรวม Zenity เข้ากับเชลล์สคริปต์เพิ่มเติมสำหรับการโต้ตอบกับผู้ใช้ GUI จนกว่าจะคอยติดตามและเชื่อมต่อกับ Tecmint อย่าลืมให้ข้อเสนอแนะอันมีค่าของคุณในส่วนความคิดเห็น