Нужен интерфейс для скрипта графического интерфейса, более мощный, чем zenity

Я хочу написать файл сценария оболочки, который имеет графический интерфейс с несколькими полями ввода для входа пользователя. Я уже попробовал zenity. Любые идеи или советы будут оценены.

4
задан 28 December 2011 в 01:24

5 ответов

Yad может быть полезным в этом отношении, это - ветвление zenity с большим количеством функций, одним из них способность создать формы.

Вот очень простой пример формы:

#!/bin/bash


frmdata=$(yad --title "Test Form" --form --field "Address" --field="Name")


frmaddr=$(echo $frmdata | awk 'BEGIN {FS="|" } { print $1 }')
frmname=$(echo $frmdata | awk 'BEGIN {FS="|" } { print $2 }')

echo $frmaddr > test.txt
echo $frmname >> test.txt

Вышеупомянутый сценарий отобразит форму как это:

Yad Form Example

После того, как Вы вводите свои данные и нажимаете ОК или совершаете нападки, вводят в клавиатуру, данные формы будут записаны в текстовый файл под названием test.txt, я использую awk для разделения данных формы, которые являются строкой с каналом как разделитель полей, я полагаю, что существует прямой способ получить данные без awk, но я не yad эксперт, проверьте, что проект размещает и задает вопросы, можно найти более изящный путь.

Как получить и установить yad здесь:

http://www.webupd8.org/2010/12/yad-zenity-on-steroids-display.html

проект yad домой:

http://code.google.com/p/yad/

больше примеров здесь:

http://technostripe.com/yad-a-fork-of-zenity-with-more-features/

http://code.google.com/p/yad/wiki/Examples

Я опаздываю здесь, но это может все еще быть полезно.

10
ответ дан 28 December 2011 в 01:24

xDialog - нечто похожее, - это список поиска из свежего мяса . tcl / tk - еще один популярный инструмент для таких задач.

Плохое решение потребовало бы, чтобы пользователь заполнил список и, наконец, пометил все строки:

zenity --list --text "Fill every row, and mark all rows before hitting 'OK'" --column "title" --print-column=2 --multiple --column "value" --editable "name" "(please override)" "host" "" "ip" ""

Я признаю, что это неудобно.

0
ответ дан 28 December 2011 в 01:24

Мой ответ может быть запоздалым (думаю, на два года позже), но, поскольку многие люди все еще ищут ответ на этот же вопрос, это может быть полезно. Я также ищу решение «лучше, чем zenity / yad / xdialog», и я нашел две очень хорошие программы:

  1. gtkdialog: http://code.google.com/ p / gtkdialog / вы можете создать полный пользовательский интерфейс для bash, который продолжает работать во время взаимодействия с вашим backendscript. Он находится в активной разработке и также используется разработчиками щенков. его собственный язык, похожий на glade, более мощный, чем libglade, однако он может запускать libglade XML.

  2. gtkserver: http://www.gtk-server.org/ Этот шаг идет еще дальше и выполняется как сопроцесс при взаимодействии с вашим bash-скриптом через каналы, сообщения или TCP -ports. Он работает не с файлом описания в формате XML, а с GTK-командами, которые вы вызываете из командной строки bash. Действительно очень мощный: -)

gtkdialog больше нет в репозиториях, но вы можете найти последние версии в PPA ( https://launchpad.net/~dnjl/ + archive / build / + sourcepub / 2986274 / + list-archive-extra )

У gtkserver нет PPA или deb AFAIK, поэтому его нужно скомпилировать из исходного кода.

0
ответ дан 28 December 2011 в 01:24

Одно из решений - использовать Zenity, а просто отображать каждое приглашение в отдельности. Первая подсказка будет для первого поля, а затем, когда пользователь нажимает «ОК», вы можете запросить второе поле.

Похоже, что вы достигли пределов написания сценариев, и, возможно, захотите заняться разработкой интерфейса, похожего на приложение, используя что-то вроде QT или GTK.

0
ответ дан 28 December 2011 в 01:24

Можно хотеть попробовать CommandUI. Это не требует кодирования.

1
ответ дан 23 November 2019 в 11:35

Другие вопросы по тегам:

Похожие вопросы: