如何在Linux中的bash脚本中显示GUI消息框?

时间:2020-03-05 18:38:48  来源:igfitidea点击:

我正在Ubuntu Linux下编写一些小bash脚本。我希望能够从GUI运行它们而无需终端窗口来输入任何输入或者查看任何输出。

到目前为止,所需的唯一输入就是用于sudo和gksudo句柄的密码。
但是我还没有找到显示消息框的简便方法。是否有某种" gkmessage"命令可用?我希望在默认的Ubuntu安装中提供一些东西,但是如果有必要,我不介意安装新软件包。

解决方案

回答

我找到了xmessage命令,这已经足够好了。

回答

这是一个小的Tcl脚本,可以执行我们想要的操作。 Wish解释器应默认安装在Ubuntu上。

#!/usr/bin/wish
pack [label .msg -text [lindex $argv 0]]
pack [entry .ent]
bind .ent <KeyPress-Return> { puts [.ent get]; destroy . }
focus .ent

这样称呼它:

myanswer=`gui-prompt "type your answer and press enter"`

回答

我相信Zenity会做我们想要的。它是专门为从命令行显示GTK对话框而设计的,并且可以作为Ubuntu软件包使用。

回答

也有dialog和KDE版本kdialog。 slackware使用dialog,因此它可能无法立即在其他发行版中使用。

回答

Kdialog和对话框都很好,但是我建议Zenity。快速,轻松,更好地查看xmessage或者对话框。

回答

Zenity确实是我认为我们正在寻找的确切工具。

或者

zenity --help

回答

zenity应用程序似乎就是我们要寻找的。

要从zenity中获取输入,可以指定一个变量,并将zenity --entry的输出保存到该变量中。看起来像这样:

my_variable=$(zenity --entry)

如果现在查看my_variable中的值,它将是在zenity弹出输入对话框中键入的值。

如果要提示用户(或者我们)应在对话框中输入什么内容,请添加--text开关并添加所需的标签。看起来像这样:

my_variable=$(zenity --entry --text="What's my variable:")

Zenity还有许多其他针对特定任务的不错的选择,因此我们可能也想通过zenity --help来检查一下。一个示例是--calendar选项,它使我们可以从图形日历中选择一个日期。

my_date=$(zenity --calendar)

根据用户单击的日期,可以给出格式正确的日期:

echo ${my_date}

给出:

08/05/2009

滑块选择器,错误,列表等还有一些选项。

希望这可以帮助。