网站搜索

Zenity - 在命令行和 Shell 脚本中创建图形 (GTK+) 对话框


GNU Linux,建立在非常强大的内核之上的操作系统,称为Linux。 Linux 以其命令行操作而闻名。随着 Linux 在日常和桌面计算中的发明,nix 不再偏向命令行,它同样是图形化的,开发图形应用程序不再是一项艰巨的任务。

在本文中,我们将讨论使用名为“Zenity”的 GTK+ 应用程序创建和执行简单的图形对话框。

什么是禅宗?

Zenity 是一个开源跨平台应用程序,它在命令行中并使用 shell 脚本显示 GTK+ 对话框。它允许在图形框中向/从 shell 询问和呈现信息。该应用程序允许您在命令行中创建图形对话框,并使用户和 shell 之间的交互变得非常容易。

还有其他替代方案,但没有什么能比得上 Zenity 的简单性,特别是当您不需要复杂的编程时。 Zenity,一个你必须掌握的工具。

禅尼特特点

  1. 自由和开源软件
  2. 跨平台应用
  3. 允许 GTK+ 对话框执行
  4. 命令行工具
  5. Shell 脚本支持

用处

  1. 轻松创建图形用户界面
  2. 比其他复杂工具功能更少
  3. 使 shell 脚本能够与 GUI 用户交互
  4. 可以为图形用户交互创建简单的对话框

由于Zenity可用于所有已知的主要平台,并且基于GTK+库,Zenity程序可以移植到另一个平台或从另一个平台移植。

在 Linux 中安装 Zenity

Zentity 默认安装在当今大多数标准 Linux 发行版的存储库中或可用。您可以通过执行以下命令来检查是否已安装到您的计算机上。

ravisaive@tecmint:~$ zenity --version 

3.8.0
ravisaive@tecmint:~$ whereis zenity 

zenity: /usr/bin/zenity /usr/bin/X11/zenity /usr/share/zenity /usr/share/man/man1/zenity.1.gz

如果尚未安装,您可以使用 AptYum 命令安装它,如下所示。

ravisaive@tecmint:~$ sudo apt-get install zenity		[on Debian based systems]

root@tecmint:~# yum install zenity				[on RedHat based systems]

此外,您还可以从源文件构建它,使用以下链接下载最新的 Zenity 源包(即当前版本 3.8)。

  1. http://ftp.gnome.org/pub/gnome/sources/zenity/

Zenity 基本对话框

Zenity的一些基本对话框,可以直接从命令行调用。

1. 快速日历对话框怎么样?
root@tecmint:~# zenity --calendar

2. 错误对话框
root@tecmint:~# zenity --error

3. 通用文本输入对话框
root@tecmint:~# zenity --entry

4. 信息对话框
root@tecmint:~# zenity --info

5. 问题对话框
root@tecmint:~# zenity --question

6. 进度条
root@tecmint:~# zenity --progress

7. 比例对话框
root@tecmint:~# zenity --scale

8. 密码对话框
root@tecmint:~# zenity --password

9. 表单对话框
root@tecmint:~# zenity --forms

10.关于对话框
root@tecmint:~# zenity --about

创建 Shell 脚本对话框

现在我们将在这里讨论使用简单的 shell 脚本创建 Zenity Dialog。虽然我们可以通过直接从 shell 执行 Zenity 命令来创建单个对话框(就像我们上面所做的那样),但是我们无法链接两个对话框以获得一些有意义的结果。

一个交互式对话框怎么样,它接受您的输入并显示结果。

#!/bin/bash 
first=$(zenity --title="Your's First Name" --text "What is your first name?" --entry) 
zenity --info --title="Welcome" --text="Mr./Ms. $first" 
last=$(zenity --title="Your's Last Name" --text "$first what is your last name?" --entry) 
zenity --info --title="Nice Meeting You" --text="Mr./Ms. $first $last"

将其保存到“anything.sh”(按照惯例),并且不要忘记使其可执行。对 anything.sh 文件设置 755 权限并运行脚本。

root@tecmint:~# chmod 755 anything.sh 
root@tecmint:~# sh anything.sh

关于脚本描述

传统的 shebang 又名 hashbang

#!/bin/bash

在下面的行中,“first”是一个变量,变量的值是在运行时生成的。

    1. -entry’表示要求 zenity 生成一个文本输入框。
    2. – title=’定义生成文本框的标题。
    3. —text=”定义文本输入框中可用的文本。
first=$(zenity --title="Your's First Name" --text "What is your first name?" --entry)

下面脚本文件的这一行用于生成信息(-info)对话框,标题为“Welcome”,文本为“Mr./Ms.first”

zenity --info --title="Welcome" --text="Mr./Ms. $first"

脚本的这一行与脚本的第二行类似,只是这里定义了一个新变量“last”。

last=$(zenity --title="Your's Last Name" --text "$first what is your last name?" --entry)

脚本的最后一行再次与脚本的第三行类似,它生成包含变量“$first”和“$last”的信息对话框。

zenity --info --title="Nice Meeting You" --text="Mr./Ms. $first $last"

有关如何使用 shell 脚本创建自定义对话框的更多信息,请访问以下参考页面 Zenity

  1. https://help.gnome.org/users/zenity/stable/

在下一篇文章中,我们将把 Zenity 与更多用于 GUI 用户交互的 shell 脚本集成。在此之前,请继续关注并连接到 Tecmint。不要忘记在评论部分提供您宝贵的反馈。