哪里记录了组合框与zenity的用法?


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)

Answers:


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

我看到下拉框的默认值预先填充了数组的第一个值,并且所有值都可用。


感谢你的回答。很好奇的是手册没有提到组合框。
2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.