การใช้คอมโบบ็อกซ์แบบเอกสารที่มี zenity อยู่ที่ไหน


11

ฉันพบโดยบังเอิญมันเป็นไปได้ที่จะแสดงคอมโบบ็อกซ์ที่มี zenity (เวอร์ชั่นทดสอบ: 2.32.1) ดูรหัสต่อไปนี้:

#!/bin/bash
array=(a b c d e)
value=$(zenity --entry --title "Window title" --text "${array[@]}" --text "Insert your choice.")

ผลลัพธ์จะแสดงด้วยภาพ 3 ภาพต่อไปนี้:

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่

ฉันมีคำถามสองข้อเกี่ยวกับเรื่องนี้:

  1. มีเอกสารเกี่ยวกับฟังก์ชั่นนี้หรือไม่? ฉันไม่พบสิ่งใดในเอกสารประกอบการใช้งาน

  2. เหตุใดค่าแรกของอาร์เรย์ของฉันจึงไม่ปรากฏในกล่องคอมโบ ในตัวอย่างข้างต้นอาร์เรย์ของฉันคือและกล่องคำสั่งผสมการแสดงเท่านั้น(a b c d e)b c d e

    (0 a b c d e)เป็นวิธีแก้ปัญหาผมเพิ่มค่าในอาร์เรย์ของฉันเช่น

คำตอบ:


5

--textองค์ประกอบแรกของอาร์เรย์ที่ได้รับการกินขึ้นโดย หลังจากขยายแล้วสาย Zenitiy ของคุณจะดูเหมือน:

zenity --entry --title "Window title" --text a b c d e --text "Insert your choice."
# Which zenity treats equivalent to
zenity --entry --title "Window title" --text a --text "Insert your choice." b c d e

ดังนั้นก่อนอื่นให้คุณตั้งค่าข้อความaจากนั้นคุณจะแทนที่ด้วย "แทรกตัวเลือกของคุณ" และข้อโต้แย้งที่เหลือก็กลายเป็นตัวเลือก

สิ่งที่คุณต้องการคือ:

zenity --entry --title "Window title" --text "Insert your choice." a b c d e
# Hence:
zenity --entry --title "Window title" --text "Insert your choice." "${array[@]}"

4

นี่เป็นเอกสารจริง (อาจไม่ใช่เวลาที่มีการโพสต์คำถามไม่ได้ตรวจสอบ) ไม่ใช่ในคู่มือ แต่ในzenity --help-forms :

$ LANG=en_US zenity --help-forms
Usage:
  zenity [OPTION...]

Forms dialog options
  --forms                                           Display forms dialog
  --add-entry=Field name                            Add a new Entry in forms dialog
  --add-password=Field name                         Add a new Password Entry in forms dialog
  --add-calendar=Calendar field name                Add a new Calendar in forms dialog
  --add-list=List field and header name             Add a new List in forms dialog
  --list-values=List of values separated by |       List of values for List
  --column-values=List of values separated by |     List of values for columns
  --add-combo=Combo box field name                  Add a new combo box in forms dialog
  --combo-values=List of values separated by |      List of values for combo box
  --show-header                                     Show the columns header
  --text=TEXT                                       Set the dialog text
  --separator=SEPARATOR                             Set output separator character
  --forms-date-format=PATTERN                       Set the format for the returned date

ดังนั้น:

zenity --forms --title "Window title" --text "Combo name" --add-combo "Insert your choice." --combo-values "a|b|c|d|e"

3

ฉันคิดว่าคุณต้องการใช้--text-entryสำหรับอาร์เรย์ของค่าไม่ใช่--text( อ้างอิง ) โดยใช้:

#!/bin/bash
array=(a b c d e)
value=$(zenity --entry --title "Window title" --entry-text "${array[@]}" --text "Insert your choice.")

ฉันเห็นค่าเริ่มต้นของกล่องดรอปดาวน์เต็มไปด้วยค่าแรกของอาร์เรย์และค่าทั้งหมดที่มี


ขอบคุณสำหรับคำตอบ. มันอยากรู้ว่าคู่มือไม่ได้หมายถึงกล่องคำสั่งผสม
jep
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.