需要一个比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:

Yad表格示例

输入数据并单击确定或按键盘上的Enter键后,表单数据将被写入名为test.txt的文本文件中,我使用awk将表单数据作为字段分隔符与管道分隔,我相信有一种直接的方法可以在没有awk的情况下获取数据,但我不是专家,请检查项目主页并提出问题,您可能会找到更优雅的方式。

如何在这里获取并安装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

我来晚了,但这可能仍然有用。

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更好”的解决方案,我找到了两个非常好的程序:

  1. gtkdialog: http : //code.google.com/p/gtkdialog/您可以为bash构建一个完整的用户界面,该界面在与您的后端进行通信时保持运行。 它正在积极发展,也被小狗开发者使用。 它自己的类似glade的语言比libglade更强大,但它可以运行libglade XML。

  2. 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之类的东西来开发类似应用程序的界面。