我想编写一个带有 GUI 的 shell 脚本文件,其中包含多个输入框供用户输入。我已经尝试过了zenity
。任何想法或建议都将不胜感激。
答案1
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
上述脚本将显示如下表单:
输入数据并单击“确定”或按键盘上的回车键后,表单数据将写入名为 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
我来晚了,但这可能仍然有帮助。
答案2
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" ""
我承认,那并不舒服。
答案3
我的回复可能有点晚了(我想晚了两年),但因为很多人仍在寻找这个问题的答案,所以它可能很有用。我也搜索了“比 zenity/yad/xdialog 更好的”解决方案,找到了两个非常好的程序:
gtk对话框:http://code.google.com/p/gtkdialog/ 您可以为 bash 构建一个完整的用户界面,该界面在与后端脚本通信的同时保持运行。它正在积极开发中,也被 Puppy 开发人员使用。它自己的类 glade 语言比 libglade 更强大,但它可以运行 libglade XML。
gtk服务器: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,因此必须从源代码进行编译。
答案4
你可能想尝试命令用户界面.它不需要编码。