Нужен интерфейс для скрипта графического интерфейса, более мощный, чем zenity
Я хочу написать файл сценария оболочки, который имеет графический интерфейс с несколькими полями ввода для входа пользователя. Я уже пробовала zenity
, Любые идеи или советы будут оценены.
4 ответа
Яд может быть полезен в этом отношении, это вилка 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
Приведенный выше скрипт будет отображать такую форму:
После того, как вы введете свои данные и нажмете "ОК" или нажмете "Enter" на клавиатуре, данные формы будут записаны в текстовый файл с именем test.txt. Я использую awk для разделения данных формы, представляющих собой строку с каналом в качестве разделителя полей, Я верю, что есть прямой способ получить данные без awk, но я не эксперт, пожалуйста, проверьте проект дома и задайте вопросы, вы можете найти более элегантный способ.
Как получить и установить ЯД здесь:
http://www.webupd8.org/2010/12/yad-zenity-on-steroids-display.html
Яд проект дома:
больше примеров здесь:
http://technostripe.com/yad-a-fork-of-zenity-with-more-features/
http://code.google.com/p/yad/wiki/Examples
Я опоздал сюда, но это все еще может быть полезно.
Мой ответ может быть запоздалым (думаю, на два года позже), но, поскольку многие люди все еще ищут ответ на этот же вопрос, он может оказаться полезным. Я также ищу решение "лучше, чем zenity / yad / xdialog", и я нашел две очень хорошие программы:
gtkdialog: http://code.google.com/p/gtkdialog/ вы можете создать полный пользовательский интерфейс для bash, который продолжает работать во время связи с вашим backendscript. Он находится в активной разработке и также используется разработчиками щенков. его собственный язык, похожий на glade, более мощный, чем libglade, однако он может запускать libglade XML.
gtkserver: http://www.gtk-server.org/ Этот шаг идет еще дальше и выполняется как сопроцесс при взаимодействии с вашим bash-скриптом через каналы, сообщения или TCP-порты. Он работает не с файлом описания в формате XML, а с GTK-командами, которые вы вызываете из командной строки bash. Очень мощный действительно:-)
gtkdialog больше нет в репозиториях, но вы можете найти последние версии в PPA ( https://launchpad.net/~dnjl/+archive/build/+sourcepub/2986274/+listing-archive-extra)
У gtkserver нет PPA или deb AFAIK, поэтому его нужно скомпилировать из исходного кода.
xDialog чем-то похож, вот список поиска от freshmeat. 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" ""
Я признаю, что это не удобно.
Одним из решений было бы использовать Zenity, но просто отображать каждое приглашение индивидуально. Первая подсказка будет для первого поля, а затем, когда пользователь нажимает "Ок", вы можете запросить второе поле.
Похоже, вы достигли пределов написания сценариев и захотите заняться разработкой интерфейса, похожего на приложение, используя что-то вроде QT или GTK.