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.