需要一个比 zenity 更强大的 GUI Shell 脚本界面

需要一个比 zenity 更强大的 GUI Shell 脚本界面

我想编写一个带有 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

上述脚本将显示如下表单:

Yad 表格示例

输入数据并单击“确定”或按键盘上的回车键后,表单数据将写入名为 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

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

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

  1. gtk对话框:http://code.google.com/p/gtkdialog/ 您可以为 bash 构建一个完整的用户界面,该界面在与后端脚本通信的同时保持运行。它正在积极开发中,也被 Puppy 开发人员使用。它自己的类 glade 语言比 libglade 更强大,但它可以运行 libglade XML。

  2. 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

你可能想尝试命令用户界面.它不需要编码。

相关内容