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 创建和执行第一个程序的方式。
现在,我们将简要解释该代码。
- #!/bin/bash:任何 shell 脚本的第一行,用于指定 bash shell 路径。
- GTKDIALOG=gtkdialog:这里我们定义了一个变量,以便稍后使用 gtkdialog 执行 shell 脚本时使用它,这一行必须出现在您使用 gtkdialog 创建的所有脚本中。
- export MAIN_DIALOG=:我们定义的另一个变量,它将包含我们界面的所有语法,您可以将 MAIN_DIALOG 替换为您想要的任何名称,但您也必须在脚本的最后 4 行中替换它。
- 窗口标题:我认为这段代码不需要解释,我们创建了一个标题,窗口的默认图标,我们选择它是否可调整大小,并且我们定义了宽度和我们想要的高度,当然所有这些选项都是次要的,如果您愿意,您可以只使用
标记。 :我们使用 vbox 标签创建一个垂直框,创建 vbox 标签很重要,以便包含其他标签,例如 hbox 和 button 等。 :这里我们使用 标签创建了一个水平盒子,“space-fill”和“space-expand”是通过窗口扩展水平盒子的选项。 - <button>:创建一个新按钮。
- :这是按钮的默认文本,我们使用关闭了label标签,当然关闭我们使用的所有标签非常重要。
:这是单击按钮时发生的情况,如果需要,您可以运行 shell 命令,也可以执行任何其他文件,还有许多其他操作和信号,不要'不要忘记使用 关闭它。 - :关闭按钮标签。
- :关闭hbox标签。
- :关闭窗口标签。
最后 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
现在,我们将简要解释该代码。
- 我们使用
创建一个组合框小部件, 标记是存储所选项目的变量的默认名称,我们稍后使用 echo 来使用此变量打印所选项目。 是水平分隔符,您可以使用 width-request 选项为其设置默认宽度。 - 是一个确定按钮,单击它时就会关闭窗口,它非常有用,因此我们不需要创建自定义按钮来执行此操作。
我的第三个计划
创建另一个名为‘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
在这里,以更详细的方式解释代码。
- 我们使用
创建了两个笔记本选项卡,tab-label 选项是您可以创建选项卡的地方,gtkdialog 将根据您输入的标签创建选项卡,每个 被定义为一个选项卡,因此第一个选项卡以第一个 ,第二个选项卡以第二个 开头。 是一个文本小部件,我们使用 标签将创建一个新的旋转按钮,range-min 选项是旋转按钮的最小值,range-max 是旋转按钮的最大值,range-value 是旋转按钮的默认值按钮。 - 我们为
提供了一个变量“myscale”。 - 我们使用 echo 和 $myscale 变量打印所选值,此处操作的默认信号是“值更改”,这帮助我们做到了这一点。
这只是一个示例窗口,如果您愿意,您可以使用 gtkdialog 创建更复杂的界面,您可以浏览 gtkdialog 网站中的官方文档,从下面的链接查看所有 gtkdialog 标签。
Gtkdialog 文档
您以前使用过 gtkdialog 为 shell 脚本创建 GUI 吗?或者您是否使用过任何此类实用程序来创建界面?你怎么看待这件事?