使用zenity我可以像这样创建一个组合框
zenity --entry --title "Window title" --text "Insert your choice." a b c d e
如何在一个对话框中创建两个组合框,我尝试使用像这样的
分隔符命令zenity --entry --title "Select Flash Drives" --text "Insert your choice." --separator="," --add-entry="IP address" --add-entry="PORT"
但它说
--separator is not supported for this dialog
是否可以在一个zenity对话框中创建两个组合框
答案 0 :(得分:4)
虽然无法使用两个组合框,但可以使用--forms
选项在一个对话框中生成两个输入框,这也允许合并列表(用户最多可以从中选择一个项目):< / p>
zenity --forms --title "Select Flash Drives" --text "Select Flash Drives" \
--add-entry "Insert your choice" \
--add-entry="IP address"
甚至
zenity --forms --title "Select Flash Drives" --text "Select Flash Drives" \
--add-list "Insert your choice" --list-values 'a|b|c' \
--add-entry="IP address" --add-entry="PORT"
--forms
的主要问题是它不允许使用默认值。 (除非表单以列表开头,在这种情况下,它的第一个值似乎默认选中。)唯一的解决方法是在问题文本中指定默认值(以便用户可以看到它)然后检查用户是否在zenity之外的脚本中提供了任何值:
RETURNVALUE=`zenity --forms --title "Select Flash Drives" --text "Select Flash Drives" \
--add-entry="IP address (leave empty to use 8.8.8.8)" \
--add-list "Insert your choice (leave empty to use C)" --list-values 'a|b|c'`
# extract the IP and DRIVE values
IP=$(awk -F'|' '{print $1}' <<<$RETURNVALUE);
DRIVE=$(awk -F'|' '{print $2}' <<<$RETURNVALUE);
# [[ -z $var ]] is true iff the length of $var is zero
# the second element in && is evaluated only if the first one is true
[[ -z $IP ]] && IP="8.8.8.8";
[[ -z $DRIVE ]] && DRIVE="C";
答案 1 :(得分:2)
否,这是不可能的。 Zenity旨在“创建简单的对话框”,您要求的是距离简单更进一步。
我认为你需要寻找一个不同的工具。 YAD是Zenity的一个分支,它增加了一些改进,可能会帮助你实现你想要的目标。