网站搜索

Gtkdialog - 在 Linux 中使用 Shell 脚本创建图形 (GTK+) 界面和对话框


Gtkdialog(或 gtkdialog)是一个开源漂亮的实用程序,用于在 Linux shell 脚本的帮助下并使用 GTK 库以及使用类似 xml 的语法来创建和构建 GTK+ 界面和对话框,使用 gtkdialog 可以轻松创建界面。它与最著名的 Zenity 工具非常相似,但它具有一些有用的可自定义功能,使您能够轻松创建许多小部件,如 vbox、hbox、按钮、框架、文本、菜单等等。

另请阅读:使用 Zenity 创建 GTK+ 图形对话框

Linux中Gtkdialog的安装

您可以下载 gtkdialog-0.8.3(这是最新版本),也可以使用 wget 命令,解压下载的文件并运行以下命令从源代码进行编译。

sudo apt-get install build-essential		[on Debian based systems]
yum install gcc make gcc-c++			[on RedHat based systems]
wget https://gtkdialog.googlecode.com/files/gtkdialog-0.8.3.tar.gz
tar -xvf gtkdialog-0.8.3.tar.gz
cd gtkdialog-0.8.3/
./configure
make
sudo make install

现在让我们开始创建一些盒子,在您的主文件夹中创建一个新的“myprogram”脚本。

我的第一个节目
cd
touch myprogram

现在使用您想要的任何文本编辑器打开“myprogram”文件,并向其中添加以下代码。

#!/bin/bash 

GTKDIALOG=gtkdialog 
export MAIN_DIALOG=' 

<window title="My First Program" icon-name="gtk-about" resizable="true" width-request="300" height-request="310"> 

<vbox> 
	<hbox space-fill="true" space-expand="true"> 
		<button>	 
			<label>Welcome to TecMint.com Home!</label> 
			<action>echo "Welcome to TecMint.com Home!"</action> 
		</button> 
	</hbox> 
</vbox> 
</window> 
' 

case $1 in 
	-d | --dump) echo "$MAIN_DIALOG" ;; 
	*) $GTKDIALOG --program=MAIN_DIALOG --center ;; 

esac 
------------

保存文件,并设置执行权限并运行它,如图所示。

chmod 755 myprogram
./myprogram

这就是使用 gtkdialog 创建和执行第一个程序的方式。

现在,我们将简要解释该代码。

  1. #!/bin/bash:任何 shell 脚本的第一行,用于指定 bash shell 路径。
  2. GTKDIALOG=gtkdialog:这里我们定义了一个变量,以便稍后使用 gtkdialog 执行 shell 脚本时使用它,这一行必须出现在您使用 gtkdialog 创建的所有脚本中。
  3. export MAIN_DIALOG=:我们定义的另一个变量,它将包含我们界面的所有语法,您可以将 MAIN_DIALOG 替换为您想要的任何名称,但您也必须在脚本的最后 4 行中替换它。
  4. 窗口标题:我认为这段代码不需要解释,我们创建了一个标题,窗口的默认图标,我们选择它是否可调整大小,并且我们定义了宽度和我们想要的高度,当然所有这些选项都是次要的,如果您愿意,您可以只使用 标记。
  5. :我们使用 vbox 标签创建一个垂直框,创建 vbox 标签很重要,以便包含其他标签,例如 hbox 和 button 等。
  6. :这里我们使用标签创建了一个水平盒子,“space-fill”和“space-expand”是通过窗口扩展水平盒子的选项。
  7. <button>:创建一个新按钮。
  8. :这是按钮的默认文本,我们使用关闭了label标签,当然关闭我们使用的所有标签非常重要。
  9. :这是单击按钮时发生的情况,如果需要,您可以运行 shell 命令,也可以执行任何其他文件,还有许多其他操作和信号,不要'不要忘记使用 关闭它。
  10. :关闭按钮标签。
  11. :关闭hbox标签。
  12. :关闭窗口标签。

最后 4 行也必须出现在您使用 gtkdialog 创建的所有 shell 脚本中,它们使用 gtkdialog 命令执行 MAIN_DIALOG 变量,并使用 –center 选项使窗口居中,实际上非常有用。

我的第二个计划

同样,创建另一个文件并将其命名为“secondprogram”,并向其中添加以下全部内容。

#!/bin/bash 

GTKDIALOG=gtkdialog 
export MAIN_DIALOG=' 

<window title="My Second Program" icon-name="gtk-about" resizable="true" width-request="250" height-request="150"> 

<vbox> 
	<hbox space-fill="true"> 
		<combobox>	 
			<variable>myitem</variable> 
			<item>First One</item> 
			<item>Second One</item> 
			<item>Third One</item> 
		</combobox> 
	</hbox> 
	<hbox> 
		<button> 
			<label>Click Me</label> 
			<action>echo "You choosed $myitem"</action> 
		</button> 
	</hbox> 
<hseparator width-request="240"></hseparator> 

	<hbox> 
		<button ok></button> 
	</hbox> 
</vbox> 
</window> 
' 

case $1 in 
	-d | --dump) echo "$MAIN_DIALOG" ;; 
	*) $GTKDIALOG --program=MAIN_DIALOG --center ;; 

esac

保存文件,设置执行权限并运行它,如图所示。

chmod 755 secondprogram
./secondprogram

现在,我们将简要解释该代码。

  1. 我们使用 创建一个组合框小部件, 标记是存储所选项目的变量的默认名称,我们稍后使用 echo 来使用此变量打印所选项目。
  2. 是水平分隔符,您可以使用 width-request 选项为其设置默认宽度。
  3. 是一个确定按钮,单击它时就会关闭窗口,它非常有用,因此我们不需要创建自定义按钮来执行此操作。
我的第三个计划

创建另一个名为‘thirdprogram’的文件,并将整组代码添加到其中。

#!/bin/bash 

GTKDIALOG=gtkdialog 
export MAIN_DIALOG=' 

<window title="My Second Program" icon-name="gtk-about" resizable="true" width-request="250" height-request="150"> 

<notebook tab-label="First | Second|"> 
<vbox> 
	<hbox space-fill="true"> 
		<combobox>	 
			<variable>myitem</variable> 
			<item>First One</item> 
			<item>Second One</item> 
			<item>Third One</item> 
		</combobox> 
	</hbox> 
	<hbox> 
		<button> 
			<label>Click Me</label> 
			<action>echo "You choosed $myitem"</action> 
		</button> 
	</hbox> 
<hseparator width-request="240"></hseparator> 

	<hbox> 
		<button ok></button> 
	</hbox> 
</vbox> 

<vbox> 

	<hbox space-fill="true"> 
		<text> 
		<label>Spinbutton </label> 
		</text> 
	</hbox> 

	<hbox space-fill="true" space-expand="true"> 
		<spinbutton range-min="0" range-max="100" range-value="4"> 
			<variable>myscale</variable> 
			<action>echo $myscale</action> 
		</spinbutton> 
	</hbox> 

	<hbox> 
		<button ok></button> 
	</hbox> 

</vbox> 
</notebook> 
</window> 
' 

case $1 in 
	-d | --dump) echo "$MAIN_DIALOG" ;; 
	*) $GTKDIALOG --program=MAIN_DIALOG --center ;; 

esac

保存文件,授予执行权限并触发它,如图所示。

chmod 755 thirdprogram
./thirdprogram

在这里,以更详细的方式解释代码。

  1. 我们使用 创建了两个笔记本选项卡,tab-label 选项是您可以创建选项卡的地方,gtkdialog 将根据您输入的标签创建选项卡,每个 被定义为一个选项卡,因此第一个选项卡以第一个 ,第二个选项卡以第二个 开头。
  2. 是一个文本小部件,我们使用
  3. 标签将创建一个新的旋转按钮,range-min 选项是旋转按钮的最小值,range-max 是旋转按钮的最大值,range-value 是旋转按钮的默认值按钮。
  4. 我们为 提供了一个变量“myscale”。
  5. 我们使用 echo 和 $myscale 变量打印所选值,此处操作的默认信号是“值更改”,这帮助我们做到了这一点。

这只是一个示例窗口,如果您愿意,您可以使用 gtkdialog 创建更复杂的界面,您可以浏览 gtkdialog 网站中的官方文档,从下面的链接查看所有 gtkdialog 标签。

Gtkdialog 文档

您以前使用过 gtkdialog 为 shell 脚本创建 GUI 吗?或者您是否使用过任何此类实用程序来创建界面?你怎么看待这件事?