Где зарегистрировал использование поля комбинированного списка с zenity?

Я нашел случайно, что было возможно отобразить поле комбинированного списка с 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 изображениями:

enter image description here

enter image description here

enter image description here

У меня есть два вопроса об этом:

  1. Существует ли документация об этой функциональности? Я ничего не нашел в zenity документации.

  2. Почему первое значение моего массива не появляется в поле комбинированного списка? В примере выше, мой массив (a b c d e), и поле комбинированного списка только отображается b c d e.

    Как обходное решение, я добавляю значение в своем массиве, например (0 a b c d e).

11
задан 28 June 2011 в 12:11

3 ответа

Первый элемент массива съеден --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[@]}"
5
ответ дан 23 November 2019 в 04:06

Я думаю, что Вы хотите использовать --text-entry для массива значений, нет --text (ссылка). Используя:

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

Я вижу значение по умолчанию выпадающего поля, предварительно заполненного первым значением массива и всеми доступными значениями.

3
ответ дан 23 November 2019 в 04:06

Это на самом деле документируется (возможно, не в то время, когда вопрос был отправлен, не проверял), не в руководстве, а в 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"
4
ответ дан 23 November 2019 в 04:06

Другие вопросы по тегам:

Похожие вопросы: