如何使用 bash 脚本轻松创建 GUI 对话框?

如何使用 bash 脚本轻松创建 GUI 对话框?

我需要为两个 Bash 列表(文件)记录分别显示一些文本以及项目(大约 15 个值)。在同一屏幕上,我需要显示三向选择(按钮、滚动选择窗口等)。

我是 Ubuntu(11.04) 脚本新手,刚刚开始在脚本中使用 Zenity。我的朋友建议我使用 YAD。

我可以在 YAD 中完成所有这些操作吗?或者使用其他一些我们不知道的简单 GUI 工具?

答案1

这是 Yad 中的一个非常小的实现。

与脚本位于同一目录中的文本文件“mylist”包含“1 2 3 4 5 6 7 8 9 10”。空格字符是列表输入的默认分隔符。

示例脚本为:

#/bin/bash
thelist=$(<mylist)
thechoice=$(yad --title="Choose a value" --width=200 --height=200 --list --column="Values" --separator="" $thelist)
exit $(yad --title="You chose..." --text=$thechoice)

就是这样。滚动列表是自动处理的。这--separator=""是为了抑制 Yad 默认在输出中添加管道字符(“|”)。

当您阅读手册页时,您将看到您拥有大量的可能性。您可以添加按钮、图标、单选按钮等。您可以使用 Yad 的 Notebook 功能将对话框作为插件嵌入到其他对话框中,从而创建选项卡式对话框。

有一个很长的例子PCLinusOS 杂志以及一些有趣的简短示例亚德网站

答案2

对于简单的对话框,Yad 或 kdialog 确实是功能最丰富的。但是,我所知道的只有两个程序才能实现完整的 bash GUI:

gtkdialog(https://code.google.com/p/gtkdialog) 将为您提供单个程序的完整前端,如果 yad 不能满足您的需求,那么它可能就是您首先寻找的。

另一个是 gtkserver(http://www.gtk-server.org) 是一个单独运行的 GUI 服务器。您的 bash 应用程序可以通过管道、消息或 TCP 套接字与其通信,如果您计划使用单个中央接口设置复杂的脚本/应用程序,这将非常方便。我认为这对您当前的项目来说有点过分 :-)

答案3

一些 Zenity 示例,以防有人想坚持使用它。

这将创建一个“Hello world”消息框:

zenity --info --text "Saluton mondo"

这将创建一个由 ls 输出填充的列表:

ls /var/log | zenity --list --column="Files and directories"

答案4

这里是一个很好的例子,如何创建一个具有多个输入的 zenity 对话框。

在此处输入图片描述

不同的 UI 类型(复选框、日期、颜色选择器等)记录在这里

据我所知:zenity在 Ubuntu 20.04 及更高版本中开箱即安装。

相关内容