`
wsql
  • 浏览: 11777251 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

使用Zenity在终端弹出对话框

 
阅读更多
使用Zenity在终端弹出对话框

1. 介绍

Zenity可以创建下列类型的简单对话框:

  • 日历

  • 文件选择框

  • 列表框

  • 提示图标

  • 消息框

    • 错误框
    • 信息框
    • 询问框
    • 警告框
  • 进度框

  • 文本框

  • 文本信息框

2. 用法

在您写脚本时,可以使用Zenity创建简单的交互式对话框,例如:

  • 您可以创建从用户那儿获得信息的对话框。例如,您可以提示用户从日历对话框中选择日期,或者从文件选择框里选择一个文件。
  • 您可以创建向用户提供信息的对话框。例如,您可以用进度条来显示一个操作的当前运行状态,或者用一个警告框提醒用户。

当用户关闭了对话框,Zenity将输出对话框操作的文本到显示器。

当您写了Zenity命令,确保每个参数用双引号括起来。

例如,使用 :

zenity --calendar --title="假期安排"
不要用:
zenity --calendar --title=假期安排

如果您没有使用双引号,可能会产生不可预料的结果。

2.1. 访问键

访问键允许您用键盘来执行一个操作,而不是用鼠标点击菜单命令或对话框按钮。每个访问键有一个标识符,是一个在菜单或对话框选项上的带下划线的字母。

一些Zenity对话框支持使用访问键,要指定一个字符用于访问键,在对话框的文本字符前面加一个下划线,下面的例子是如何让字母“C”作为访问键:

"选择(_C)".

2.2. 退出代码

Zenity返回以下退出代码:

退出代码描述
0 用户按了确定关闭
1 用户按了取消,或者点了窗口关闭按钮。
-1 发生了一个有异常。
5 对话框因超时而关闭。

2.3. 常规选项

所有Zenity对话框支持以下常规选项:

--title=标题

指定对话框的标题。

--window-icon=图标路径

指定显示在窗口框架上的图标,有四个图标也可以用下列关键字 - 'info', 'warning', 'question' 和 'error'。

--width=宽度

指定对话框的宽度。

--height=高度

指定对话框的高度。

--timeout=超时

指定超出时间(秒)后对话框自动关闭。

2.4. 帮助选项

Zenity提供以下帮助选项:

--help

显示简短的帮助文本。

--help-all

显示所有对话框的完整帮助。

--help-general

显示常规对话框选项的帮助文本。

--help-calendar

显示日历对话框选项的帮助文本。

--help-entry

显示文本输入框选项的帮助文本。

--help-error

显示错误框选项的帮助文本。

--help-info

显示信息框选项的帮助文本。

--help-file-selection

显示文件打开框选项的帮助文本。

--help-list

显示列表框选项的帮助文本。

--help-notification

显示提示框选项的帮助文本。

--help-progress

显示进度框选项的帮助文本。

--help-question

显示询问框选项的帮助文本。

--help-warning

显示警告框选项的帮助文本。

--help-text-info

显示信息框选项的帮助文本。

--help-misc

显示其他杂项的帮助文本。

--help-gtk

显示 GTK+ 选项的帮助文本。

2.5. 杂项

Zenity也提供了其他的选项:

--about

显示关于 Zenity对话框,包含Zenity版本信息、版权入信息和开发信息。

--version

显示Zenity的版本号。

2.6. GTK+ 选项

Zenity支持标准的 GTK+ 选项,更多 GTK+ 选项的相关信息,请输入zenity -?命令。

2.7. 环境变量

通常,Zenity会检测启动它的终端窗口,并保持在它之上。这个行为也可以通过不设置WINDOWID环境变量来禁用。

3. 日历对话框

使用--calendar选项来创建日历对话框。Zenity返回选定的日期,并把它输出到显示器,如果没有在命令行指定日期,就使用当前系统日期。

日历对话框支持以下选项:

--text=文本

指定日历对话框里显示的文本。

--day=

指定日历对话框中的天数,day必须是介于 1~31 之间的数字。

--month=

指定日历对话框中的月份,month必须是介于 1~12 之间的数字。

--year=

指定日历对话框中的年份。

--date-format=日期格式

指定选定的日期返回时的样式,默认的格式取决于您的区域设置,日期格式必须可以被strftime函数接受,例如%A %d/%m/%y

下面的脚本示范了如何创建一个日历对话框:

#!/bin/sh if zenity --calendar \ --title="选择日期" \ --text="通过点击选择日期。" \ --day=10 --month=8 --year=2004 then echo $? else echo "没有选择日期" fi

图 1日历对话框范例

4. 文件选择对话框

使用--file-selection选项创建一个文件选择对话框,Zenity在标准输出返回选中的文件或目录。默认的文件选择对话框模式是打开对话框。

文件对话框支持以下选项:

--filename=文件名

指定文件选择对话框在第一次显示时,选定的文件或文件夹。

--multiple

允许在文件选择对话框里选中多个文件。

--directory

在文件选择对话框里只允许选中文件夹

--save

设置文件选择对话框模式为保存对话框。

--separator=分隔符

指定用于分隔返回的文件名列表的字符。

下面的脚本示范了如何创建一个文件选择对话框:

#!/bin/sh FILE=`zenity --file-selection --title="选择文件"` case $? in 0) echo "\"$FILE\" 被选中。";; 1) echo "没有选择文件。";; -1) echo "没有选择文件。";; esac

图 2文件选择对话框范例

5. 通知区域图标

--text=文本

指定显示在通知区域的文本。

下面的脚本示范了如何创建一个通知区域图标:

#!/bin/sh zenity --notification\ --window-icon="info" \ --text="有系统更新软件包!"

图 3通知区域图标范例

6. 列表框

使用--list选项创建一个列表框,Zenity在标准输出返回选中行的第一列项目。

对话框里的数据必须指定行和列,可以由标准输入提供,每一项都必须由换行符分隔。

如果您使用--checklist--radiolist选项,每一行必须由“TRUE”或“FALSE”开始。

列表框支持以下选项:

--column=

指定列表框显示的列标题,您必须为每个要显示的列,用--column指定一个列标题。

--checklist

指定列表框的第一列包含一个复选框。

--radiolist

指定列表框的第一列包含单选按钮。

--editable

指定显示的项可以编辑。

--separator=分隔符

指定当列表框返回选中项时,使用什么字符。

--print-column=

指定选择列上显示什么,默认是“1”,“ALL”用于在列表上显示所有列。

下面的例子示范了如何创建一个列表框:

#!/bin/sh zenity --list \ --title="选择您想查看的 Bugs" \ --column="Bug 编号" --column="严重" --column="描述" \ 992383 Normal "多选时 GtkTreeView 崩溃" \ 293823 High "GNOME 字典不能使用代理" \ 393823 Critical "菜单编辑器在 GNOME 2.0 中不能运行"

图 4列表框范例

7. 消息框

Zenity可以创建四种消息框:

  • 错误框
  • 信息框
  • 询问框
  • 警告框

对于每一种类型,使用--text选项来指定显示在对话框里的文本。

7.1. 错误框

使用--error选项创建一个错误框。

下面的脚本示范了如何创建一个错误框:

#!/bin/bash zenity --error \ --text="找不到 /var/log/syslog."

图 5错误框范例

7.2. 信息框

使用--info选项创建一个信息框。

下面的脚本示范了如何创建一个信息框:

#!/bin/bash zenity --info \ --text="全部合并。更新第 3 个文件,总共 10 个。"

图 6信息框范例

7.3. 询问框

使用--question选项创建一个询问框。

下面的脚本示范了如何创建一个询问框:

#!/bin/bash zenity --question \ --text="您确定要执行吗?"

图 7询问框范例

7.4. 警告框

使用--warning选项创建一个警告框。

下面的脚本示范了如何创建一个警告框:

#!/bin/bash zenity --warning \ --text="断开电源以防止冲击电流。"

图 8警告框范例

8. 进度框

使用--progress选项创建一个进度框。

Zenity从标准输入一行行读取数据。如果某一行以 # 开头,进度框里的文本会被那一行上的文本替换,如果某一行只是一个数字,数字会被换成进度条的百分比。

进度框支持以下选项:

--text=文本

指定显示在进度框里的文本。

--percentage=百分比

指定进度框开始时的百分比设定。

--auto-close

当达到 100% 时自动关闭对话框。

--pulsate

指定进度条跳动,直到从标准输入读到一个 EOF 文件结束符。

下面的脚本示范了如何创建一个进度框:

#!/bin/sh ( echo "10" ; sleep 1 echo "# 更新邮件日志" ; sleep 1 echo "20" ; sleep 1 echo "# 复位定时计划任务" ; sleep 1 echo "50" ; sleep 1 echo "这一行会被忽略" ; sleep 1 echo "75" ; sleep 1 echo "# 重启系统" ; sleep 1 echo "100" ; sleep 1 ) | zenity --progress \ --title="更新系统日志" \ --text="扫描邮件日志..." \ --percentage=0 if [ "$?" = -1 ] ; then zenity --error \ --text="更新被取消。" fi

图 9进度框范例

9. 文本框

使用--entry选项,创建一个文本框,Zenity将文本框的内容返回到标准输出。

文本框支持以下选项:

--text=文本

指定在文本框中显示的文本。

--entry-text=文本

指定显示在文本框的文本域里的文本。

--hide-text

隐藏文本框中文本域中的内容。

下面的脚本示范了如何创建一个文本框:

#!/bin/sh if zenity --entry \ --title="添加一项" \ --text="请输入您的密码:" \ --entry-text "密码" \ --hide-text then echo $? else echo "没有输入密码" fi

图 10文本框范例

10. 文本信息框

使用--text-info选项来创建一个文本信息框。

文本信息框支持以下选项:

--filename=文件名

指定一个加载到文本信息框里的文件。

--editable

显示的文本允许编辑,当对话框关闭后,编辑后的文本显示到显示器上。

下面的脚本示范了如何创建一个文本信息框:

#!/bin/sh FILE=`zenity --file-selection \ --title="选择一个文件"` case $? in 0) zenity --text-info \ --title=$FILE \ --filename=$FILE \ --editable 2>/tmp/tmp.txt;; 1) echo "没有选择文件。";; -1) echo "没有选择文件.";; esac

图 11文本信息框范例

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics