การใช้กล่องโต้ตอบ Zenity ในทางปฏิบัติ

ฉันมักจะเปิดฟอรั่มในประเทศของฉันบ่อยมาก…และจริงๆแล้วการหาสิ่งที่น่าสนใจนั้นหายาก อย่างไรก็ตามในหนึ่งในฟอรัมเหล่านั้นมีผู้ใช้คนหนึ่งได้โพสต์ที่น่าสนใจสองครั้งเกี่ยวกับ Linux และนี่เป็นครั้งแรก (ที่ฉันต้องการแบ่งปันกับคุณ)

การใช้กล่องโต้ตอบ Zenity ในทางปฏิบัติ

Zenity คือชุดของกล่องโต้ตอบกราฟิกที่ gtk libraries ใช้ด้วยโปรแกรมนี้เราสามารถป้อนข้อมูลเลือกรายการงานแสดงข้อมูลที่เกิดจากกระบวนการที่กำหนดอนุญาตให้เราหยุดชะงักก่อนหรือระหว่างกระบวนการบางอย่าง ฟังก์ชั่น.

Zenity ประกอบด้วยกล่องโต้ตอบกราฟิกประมาณ 13 กล่องมาดูกันว่าสิ่งเหล่านี้คืออะไรและชุดค่าผสมที่เป็นไปได้:

1- ในการแสดงปฏิทินและเลือกวันที่ที่ต้องการ (วันที่นี้จะแสดงในรูปแบบตัวเลขเมื่อเลือกแล้ว):

zenity --calendar

2- ในการป้อนข้อความ (มีประโยชน์มากเมื่อขอข้อมูลหรือชื่อไฟล์)

zenity --entry

รวมเข้าด้วยกันอย่างถูกต้องเพื่อที่จะขอให้เราป้อนข้อมูล

zenity --entry --text "Escriba el nombre del archivo"

3- เพื่อแจ้งให้เราทราบว่าเกิดข้อผิดพลาด

zenity --error --text "Imposible continuar"

4- เพื่อเลือกไฟล์

zenity --file-selection $HOME

การเพิ่มตัวเลือกนี้ทำให้เราสามารถเลือกไฟล์ต่างๆได้:
--multiple

ด้วยวิธีนี้คุณจะเลือกเฉพาะโฟลเดอร์
--directory

ด้วยวิธีนี้แทนที่จะเลือกเราจะเปิดใช้งานตัวเลือกบันทึก
--save

ด้วยวิธีนี้เราจะป้องกันไม่ให้ไฟล์ที่มีอยู่ถูกเขียนทับ:
--confirm-overwrite

5- แสดงข้อมูลบางอย่าง

zenity --info *text "Información a mostrar"

6- แสดงรายการตัวเลือกและเลือกหนึ่งหรือกลุ่มเหล่านี้:
zenity --list --column "nombre de columna" "opcion1" "opción2" "opción3" "opción4"

ตอนนี้จะเกิดอะไรขึ้นถ้าเราต้องการมีรายการการดำเนินการสำหรับไฟล์บางไฟล์ แต่เราต้องการให้แสดงชื่อของการดำเนินการ เพื่อให้บรรลุสิ่งนี้เราต้องใช้สองตัวเลือกนี้ (ค่า - ซ่อนคอลัมน์และค่า * คอลัมน์พิมพ์) ซึ่งจะมีลักษณะดังนี้:

zenity --hide-column 2 --print-column 2 --list --column "nombre de columna" --column "columna oculta" "nombre1" "comando1" "nombre2" "comando2"

หากเราต้องการเลือกมากกว่าหนึ่งการกระทำในแต่ละครั้งเราต้องเพิ่มสองตัวเลือกนี้
ข้อความที่จะแยกลำดับที่เลือกออกจากลำดับอื่น ๆ (ในกรณีนี้เราเพิ่ม»»ซึ่งหมายถึงช่องว่าง
--separator=" "

และตัวเลือกที่จะช่วยให้เราสามารถเลือกมากกว่าหนึ่งการกระทำในแต่ละครั้ง
--multiple

7- แสดงการแจ้งเตือนในแถบเมนู

zenity *notification *text "Texto deseado"

8- แสดงความคืบหน้าของกระบวนการที่กำหนด:
zenity --progress --pulsate

9- ด้วยสิ่งนี้จะแสดงคำถามให้เราเห็นและเราสามารถเลือกได้ว่าต้องการดำเนินการต่อหรือไม่:

zenity --question --text "Desea Continuar"

10- ด้วยวิธีนี้เราสามารถรับผลลัพธ์ของลำดับในคอนโซลเช่นรายการการค้นหาไฟล์แบบสอบถามความช่วยเหลือและอื่น ๆ :

zenity --text-info zenity --help-all | zenity --text-info

11- สิ่งนี้สามารถแจ้งให้เราทราบว่ากระบวนการหยุดชะงัก

zenity --warning --text "El proceso ha fallado" ls /media/carpeta || zenity --warning --text "No existe el directorio"

12- ด้วยวิธีนี้เราสามารถเลือกหมายเลขที่กำหนดโดยใช้แถบเลื่อน:

zenity --scale

ด้วยการเพิ่มตัวเลือกนี้เราสามารถกำหนดค่าต่ำสุด:
--value 60 --min-value 60
(ตัวเลือก –value ไม่ควรน้อยกว่า * min-value)

ด้วยสิ่งนี้เราจึงเลือกค่าสูงสุด
--max-value 100

13- ด้วยสิ่งนี้จะแสดงกล่องโต้ตอบซึ่งเราสามารถเลือกสีที่ต้องการและนำสีจากอีกด้านหนึ่งด้วยหยดตัวเลือกสีที่เรียกว่า
zenity --color-selection --show-palette

หลังจากดูว่ามีกล่องโต้ตอบใดบ้างในโปรแกรมนี้เรามาดูตัวอย่างที่ใช้ได้จริงดังนี้:

- มาดูกันว่าเราจะผสมกล่องโต้ตอบการป้อนข้อความได้อย่างไร
ใช้สคริปต์:

#!/bin/bash

#Darle a una palabra una secuencia de comandos.

archivo="`zenity --entry --text "Escriba el nombre del archivo"`"

#comando para renombrar

mv "$@" "`dirname "$@"`"/"$archivo"

- มาดูวิธีรวมกล่องโต้ตอบหมายเลข 12 ของมาตราส่วนตัวเลข:
(นี่เป็นสคริปต์ง่ายๆในการลดคุณภาพของภาพ jpg และลดพื้นที่ว่างบนดิสก์ของเรา)

#!/bin/bash

#Darle a una palabra una secuencia de comandos.

foto="`zenity --scale --value 80 --min-value 60 --max-value 100`"

#comando para comprimir la imagen

mogrify -compress jpeg -quality "$foto%" "$@"

- มาดูอีกตัวอย่างหนึ่งที่เราจะใช้กล่องโต้ตอบตัวเลือกสีซึ่งเราจะเพิ่มกรอบของสีที่เราเลือกลงในภาพถ่าย:

#!/bin/bash

#Darle a una palabra una secuencia de comandos.

foto="`zenity --color-selection --show-palette`" marco="`zenity --entry --text "Seleccione el rango deseado 6x6"`"

#comando para agregarle el marco

mogrify -border $marco -bordercolor $foto "$@"

- ลองดูตัวอย่างพร้อมกล่องโต้ตอบข้อความแสดงข้อผิดพลาด:

#!/bin/bash

rm "$@" || zenity --error --text "Imposible de eliminar esto es una carpeta"

ดังที่คุณเห็นหากมีคนพยายามลบโฟลเดอร์กระบวนการจะส่งกลับข้อผิดพลาดดังนั้นห่วงโซ่จึงดำเนินต่อไปด้วยตัวดำเนินการ || เหล่านี้

- มาดูกันว่าเราสามารถทำอะไรได้บ้างกับกล่องโต้ตอบหมายเลข 6 โดยเลือกการกระทำที่เราจะดำเนินการกับไฟล์บางไฟล์:

#!/bin/bash

actions="`zenity --multiple --separator="" --hide-column 2 --print-column 2 --list --column "nombre de columna" --column "columna oculta" "comprimir un 80%" " -compress jpeg -quality 80%" "Cambiar tamaño a 800x600" " -resize 800x600"`"

#Comando

mogrify$actions "$@"

โปรดสังเกตว่ามีช่องว่างในกล่องคำสั่งเนื่องจากไม่อนุญาตให้ข้อความขึ้นต้นด้วยยัติภังค์ดังนั้นตัวคั่นในกรณีนี้จึงต้องเป็น null –separator = »»

- ลองดูตัวอย่างอื่นพร้อมกล่องโต้ตอบความคืบหน้า

#!/bin/bash

#Script para eliminar

zenity --question --text "Desea borrara las imágenes dentro de esta carpeta `basename "$@"`" && find "$@" -name *.jpg -delete | zenity --list --progress * pulsate

... ก็นี่แหละ

ฉันหวังว่าฉันจะสามารถนำโพสต์ที่น่าสนใจมาให้คุณได้มากขึ้น

ความนับถือ


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา

  1.   โรตส์ 87 dijo

    สิ่งเดียวที่ฉันใช้ zenity เพราะ winetricks ขอให้มันทำงานได้ดี (อย่างน้อยก็ในซุ้มของฉัน) ฮิฮิขอบคุณสำหรับเคล็ดลับ

  2.   elav <°ลินุกซ์ dijo

    Zenity ใช้สำหรับเทคนิคอื่น ๆ เช่นเครื่องมือค้นหา Xfce 😀

  3.   แอรอนเมนโด dijo

    ขอบคุณมากขอบคุณมากที่คุณพูดถึง Gtk + ฉันยังใช้ zenity ฉันยังไม่เข้าใจดีนัก แต่หลังจากนั้นด้วยข้อมูลที่คุณให้มาและด้วยการฝึกฝนฉันอาจพบว่ามีประโยชน์สำหรับมัน

    อาศิรพจน์

  4.   Neo61 dijo

    เฮ้จาก Camaguey (ฉันมีแป้นพิมพ์ภาษาฝรั่งเศสที่จะไม่ให้ฉันค้นหาสอง pinticos ของคุณ ... ฮิฮิฮิ) คุณช่วยอธิบายได้ดีว่านี่คืออะไรสำหรับฉัน และถ้าทั้งหมดนี้ทำโดยคอนโซล? จะเป็นการดีถ้าคุณโพสต์ภาพแคปเจอร์เพื่อให้ตัวอย่างมีภาพประกอบและวิธีนั้นจะดูดีขึ้นว่าคุณหมายถึงอะไร

    1.    KZKG ^ กาอาระ dijo

      อันที่จริงบทความนี้ไม่ได้เขียนโดยฉัน แต่โดยผู้ใช้ฟอรัมแห่งหนึ่งของเรา
      ใช่ทั้งหมดนี้ทำโดยคอนโซลและ ... มีไว้เพื่ออะไร? มันง่ายมาก: "ความรู้"

    2.    มาโนลอกซ์ dijo

      ตัวอย่างการใช้งานที่สามารถมอบให้กับ zenity สำหรับผู้ที่ใช้แป้นพิมพ์ภาษาฝรั่งเศส


      #! /bin/bash
      # Un cambiador de teclado

      ACTION=`zenity --width=0 --height=260 --list\
      --title "Selector de setxkbmap" --text "Elige tu teclado"\
      --column "Idioma"\
      "Español"\
      "Francés"\
      "Inglés"\
      "Gringo"\
      "Alemán"`

      if [ -n "${ACTION}" ]; then
      case $ACTION in
      Español)
      setxkbmap es && zenity --info --text "Teclado configurado correctamente a español" || zenity --info --text "Por alguna razón no fue posible cambiar el mapa de teclado."
      ;;
      Francés)
      setxkbmap fr && zenity --info --text "Dicho sea en francés: Teclado configurado correctamente a francés" || zenity --info --text "Por alguna razón no fue posible cambiar el mapa de teclado."
      ;;
      Inglés)
      setxkbmap gb && zenity --info --text "Dicho sea en inglés: Teclado configurado correctamente a inglés" || zenity --info --text "Por alguna razón no fue posible cambiar el mapa de teclado."
      ;;
      Gringo)
      setxkbmap us && zenity --info --text "Dicho sea en Gringo: Teclado configurado correctamente a Gringo" || zenity --info --text "Por alguna razón no fue posible cambiar el mapa de teclado."
      ;;
      Alemán)
      setxkbmap de && zenity --info --text "Dicho sea en alemán: Teclado configurado correctamente a alemán" || zenity --info --text "Por alguna razón no fue posible cambiar el mapa de teclado."
      ;;
      esac
      fi

      1.    มาโนลอกซ์ dijo

        โอ้ช่างน่าเสียดาย การคัดลอกและวางโดยตรงไม่ได้ผลเพราะเมื่อมันกลายเป็นความคิดเห็นจะเป็นการ "ดูหมิ่น" เส้นแบ่งหลังแบ็กสแลช "\"

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

        ACTION = `zenity –width = 0 –height = 260 –list –title « Setxkbmap selector » –text «เลือกแป้นพิมพ์» –column « Language »« Spanish »« French »« English »« Gringo »« German »`

        1.    มานูเอล เด ลา ฟูเอนเต dijo

          หากคุณต้องการแบ่งปันรหัสในความคิดเห็นคุณสามารถบันทึกไว้ในไฟล์ พาสต้า และวาง url ในความคิดเห็นของคุณ 🙂

          1.    มาโนลอกซ์ dijo

            เครื่องมือที่ยอดเยี่ยม ฉันไม่รู้ว่ามีเรื่องแบบนี้อยู่ในนั้น DesdeLinux.
            ครั้งต่อไปที่ความคิดเห็นต้องใช้รหัสฉันจะใช้มัน
            ขอบคุณสำหรับข้อมูล. XD

  5.   Neo61 dijo

    AH ... และถ้าคุณเห็นว่าฉันใช้ Linux นั่นเป็นเพราะฉันใช้ทั้งสองอย่าง แต่ฉันสนใจที่จะใช้งาน Linux ได้ดี

  6.   ซานติอาโก dijo

    บทความดีมาก !! มันมีประโยชน์มาก

    ฉันใช้มันในสคริปต์ thunar ที่ปรับขนาดรูปภาพที่เลือกและด้วยรายการฉันเสนอขนาดของรูปภาพมาตรฐาน

    ทักทาย!

  7.   ฮิวงะ_เนจิ dijo

    ฉันต้องการให้คุณบอกฉันว่าจะหา Zenity ได้ที่ไหนเพราะฉันกำลังมองหาอยู่แล้วและมันไม่ได้อยู่ใน repo ที่ฉันมี ... ฉันมีความสุขแค่ไหนที่ใช้ repo ที่ฉันไม่ได้ดาวน์โหลดเอง… (การแจ้งเตือน: ตรวจพบโหมดประชดประชันในความคิดเห็นนี้)

  8.   Jose Sales dijo

    มาดูกันว่าคุณคิดอย่างไรกับเรื่องนี้?
    #! / bin / ทุบตี
    เพลง = $ (zenity –width = 360 –height = 320 –title "Launcher" –file-selection –directory $ HOME)
    หา "$ song" - ชื่อ * .mp3 | เรียง - สุ่มเรียง | หัว -n 100 | xargs -d '\ n' mpg123
    ฉันยังคงต้องปรับปรุงมันเล็กน้อย