выходной сигнал из zenity
текст, который был введен, отделены друг от друга --separator
характера. Код выхода, если он принят или нет (т. Е. Выбрано OK
, Cancel
).
Так, например (в Баш):
OUTPUT=$(zenity --forms --title="Add Friend" --text="Enter Multicast address" --separator="," --add-entry="IP address" --add-entry="PORT")
accepted=$?
if ((accepted != 0)); then
echo "something went wrong"
exit 1
fi
ip=$(awk -F, '{print $1}' <<<$OUTPUT)
port=$(awk -F, '{print $2}' <<<$OUTPUT)
Это получает вас IP-адрес из Zenity в переменную внутрибрюшинно и порт из формы Zenity в переменную порта.
Второй пример немного сложнее, он использует шаблон «editable», что означает, что вы не получаете никакого вывода, если данные не изменяются, но он соответствует аналогичному шаблону предыдущему примеру. Теперь, поскольку вы сказали --print-column=
, он отображает только этот столбец на выходе. К сожалению, --list
предназначен для выбора одной или нескольких строк из списка элементов. Редактирование нескольких строк будет работать, но у вас есть, чтобы выбрать каждую из строк, чтобы получить результат из этой строки, даже после внесения изменений в данные. В этом случае, поскольку вы не указали опцию --separator
, используется разделитель по умолчанию |
.
Во втором случае использование редактируемых и входов списка не является тем, что список предназначен для использования с точки зрения пользователя.
Знаете ли вы, можно ли установить значения формы из кода? @Petesh – user573014
Когда есть несколько вариантов (т. Е. Стиль ввода '--forms'), он не поддерживает указание входных значений по умолчанию для полей (как можно ближе). Если у вас есть только одна запись, вы можете использовать «zenity -entry -text =» текст диалога «-entry-text =» текст по умолчанию »' – Petesh