Wo ist die Verwendung von Kombinationsfeldern mit Zenity dokumentiert?


11

Ich fand zufällig, dass es möglich war, ein Kombinationsfeld mit Zenity anzuzeigen (getestete Version: 2.32.1). Siehe folgenden Code:

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

Das Ergebnis wird mit den folgenden 3 Bildern dargestellt:

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Ich habe zwei Fragen dazu:

  1. Gibt es eine Dokumentation zu dieser Funktionalität? Ich habe nichts in der Zenity-Dokumentation gefunden .

  2. Warum wird der erste Wert meines Arrays nicht im Kombinationsfeld angezeigt? Im obigen Beispiel ist mein Array (a b c d e)und das Kombinationsfeld wird nur angezeigt b c d e.

    Um dieses Problem zu umgehen, füge ich meinem Array beispielsweise einen Wert hinzu (0 a b c d e).

Antworten:


5

Das erste Element des Arrays wird von aufgefressen --text. Nach der Erweiterung sieht Ihre Zenitiy-Linie folgendermaßen aus:

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

aSie setzen also zuerst den Text auf und überschreiben ihn dann mit "Fügen Sie Ihre Wahl ein". Und die restlichen Argumente werden zur Wahl.

Was Sie wollen ist:

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

Dies ist tatsächlich dokumentiert (möglicherweise nicht zum Zeitpunkt der Veröffentlichung der Frage, nicht überprüft), nicht im Handbuch, sondern in 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

Deshalb:

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

3

Ich denke, Sie möchten --text-entryfür das Array von Werten verwenden, nicht --text( Referenz ). Verwenden von:

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

Ich sehe den Standardwert des Dropdown-Felds, das mit dem ersten Wert des Arrays vorgefüllt ist, und alle verfügbaren Werte.


Danke für die Antwort. Es ist merkwürdig, dass sich das Handbuch nicht auf das Kombinationsfeld bezieht.
jpfleury
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.