Де задокументоване використання комбінованої коробки зі злісністю?


11

Я випадково виявив, що можна відобразити комбіновану коробку із зеню (версія, протестована: 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. Чи є документація про цю функціональність? Я нічого не знайшов у документації щодо zenity .

  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.")

Я бачу значення за замовчуванням випадаючого поля, попередньо заповненого першим значенням масиву, і всі наявні значення.


Дякую за відповідь. Цікаво, що керівництво не посилається на комбіновану скриньку.
1111
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.