Trường hợp sử dụng hộp tổ hợp tài liệu với sự thoải mái?


11

Tôi tình cờ tìm thấy có thể hiển thị một hộp tổ hợp với zenity (phiên bản đã thử nghiệm: 2.32.1). Xem mã sau đây:

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

Kết quả được minh họa với 3 hình ảnh sau:

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Tôi có hai câu hỏi về điều đó:

  1. Có một tài liệu về chức năng này? Tôi đã không tìm thấy bất cứ điều gì trong tài liệu hướng dẫn .

  2. Tại sao giá trị đầu tiên của mảng của tôi không xuất hiện trong hộp tổ hợp? Trong ví dụ trên, mảng của tôi là (a b c d e)và hộp tổ hợp chỉ hiển thị b c d e.

    Như một giải pháp thay thế, tôi thêm một giá trị trong mảng của tôi, ví dụ (0 a b c d e).

Câu trả lời:


5

Phần tử đầu tiên của mảng bị ăn mòn bởi --text. Sau khi mở rộng, dòng zenitiy của bạn trông như sau:

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

Vì vậy, trước tiên bạn đặt văn bản thành a, sau đó bạn ghi đè lên đó bằng "Chèn lựa chọn của bạn." Và các đối số còn lại trở thành sự lựa chọn.

Những gì bạn muốn là:

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

Điều này thực sự được ghi lại (có thể không phải tại thời điểm câu hỏi được đăng, không kiểm tra), không phải trong hướng dẫn mà là 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

Vì thế:

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

3

Tôi nghĩ rằng bạn muốn sử dụng --text-entrycho mảng các giá trị, không phải --text( tham khảo ). Sử dụng:

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

Tôi thấy giá trị mặc định của hộp thả xuống được điền sẵn giá trị đầu tiên của mảng và tất cả các giá trị có sẵn.


Cảm ơn câu trả lời. Thật tò mò rằng hướng dẫn không đề cập đến hộp tổ hợp.
jep
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.