需要一个比zenity更强大的gui shell脚本的接口
我想编写一个shell脚本文件,它有一个GUI,有多个输入框供用户输入。 我已经尝试过zenity
。 任何想法或建议将不胜感激。
Yad在这方面可能很有用,它是一个具有更多function的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
上面的脚本将显示如下forms:
输入数据并单击确定或按键盘上的Enter键后,表单数据将被写入名为test.txt的文本文件中,我使用awk将表单数据作为字段分隔符与管道分隔,我相信有一种直接的方法可以在没有awk的情况下获取数据,但我不是专家,请检查项目主页并提出问题,您可能会找到更优雅的方式。
如何在这里获取并安装yad:
http://www.webupd8.org/2010/12/yad-zenity-on-steroids-display.html
yad项目主页:
更多例子:
http://technostripe.com/yad-a-fork-of-zenity-with-more-features/
http://code.google.com/p/yad/wiki/Examples
我来晚了,但这可能仍然有用。
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 / yad / xdialog更好”的解决方案,我找到了两个非常好的程序:
-
gtkdialog: http : //code.google.com/p/gtkdialog/您可以为bash构建一个完整的用户界面,该界面在与您的后端进行通信时保持运行。 它正在积极发展,也被小狗开发者使用。 它自己的类似glade的语言比libglade更强大,但它可以运行libglade XML。
-
gtkserver: http ://www.gtk-server.org/这个更进一步,在通过管道,消息或TCP端口与bash脚本通信时作为协同进程运行。 它不适用于XML类型的描述文件,但使用从bash命令行调用的GTK命令。 确实非常强大:-)
gtkdialog不再存在于存储库中,但您可以在PPA中获取最新版本( https://launchpad.net/~dnjl/+archive/build/+sourcepub/2986274/+listing-archive-extra )
gtkserver没有PPA或deb AFAIK所以这必须从源代码编译。
一种解决方案是使用Zenity,但只是单独显示每个提示。 第一个提示将是第一个字段,然后当用户单击“确定”时,您可以提示输入第二个字段。
听起来你可能已经达到了脚本的极限,并且可能想要使用像QT或GTK之类的东西来开发类似应用程序的界面。