Dov'è l'utilizzo documentato della casella combinata con zenity?


11

Ho scoperto per caso che era possibile visualizzare una casella combinata con zenity (versione testata: 2.32.1). Vedi il seguente codice:

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

Il risultato è illustrato con le seguenti 3 immagini:

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Ho due domande al riguardo:

  1. Esiste una documentazione su questa funzionalità? Non ho trovato nulla nella documentazione di zenity .

  2. Perché il primo valore del mio array non appare nella casella combinata? Nell'esempio sopra, il mio array è (a b c d e)e viene visualizzata solo la casella combinata b c d e.

    Come soluzione alternativa, aggiungo un valore nel mio array, ad esempio (0 a b c d e).

Risposte:


5

Il primo elemento dell'array viene distrutto da --text. Dopo l'espansione, la tua linea zenitiy appare come:

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

Quindi prima imposti il ​​testo a, quindi lo sostituisci con "Inserisci la tua scelta". E gli argomenti rimanenti diventano le scelte.

Quello che vuoi è:

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

Questo è effettivamente documentato (forse non al momento della pubblicazione della domanda, non verificato), non nel manuale ma 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

Perciò:

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

3

Penso che tu voglia usare --text-entryper la matrice di valori, non --text( riferimento ). usando:

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

Vedo il valore predefinito della casella a discesa precompilato con il primo valore dell'array e tutti i valori disponibili.


Grazie per la risposta. È curioso che il manuale non si riferisca alla casella combinata.
jep
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.