全部博文(298)
分类: LINUX
2012-04-07 20:41:42
gtk+图形界面之zenity小结
转: 有改
§ 1.
§ 2.
§ 3.
§ 4.
§ 5.
§ 6.
§ 7.
§ 8.
§ 9.
§ 10.
§ 11.范围对话框
1.介绍
Zenity 可以创建下列类型的简单对话框:
§ 日历
§ 文件选择框
§ 列表框
§ 提示图标
§ 消息框
§ 错误框
§ 信息框
§ 询问框
§ 警告框
§ 进度框
§ 文本框
§ 文本信息框
2.用法
在您写脚本时,可以使用Zenity 创建简单的交互式对话框,例如:
§ 您可以创建从用户那儿获得信息的对话框。例如,您可以提示用户从日历对话框中选择日期,或者从文件选择框里选择一个文件。
§ 您可以创建向用户提供信息的对话框。例如,您可以用进度条来显示一个操作的当前运行状态,或者用一个警告框提醒用户。
当用户关闭了对话框,Zenity 将输出对话框操作的文本到显示器。
当您写了 Zenity 命令,确保每个参数用双引号括起来。
例如,使用 :
zenity --calendar --title="假期安排"
不要用:
zenity --calendar --title=假期安排
如果您没有使用双引号,可能会产生不可预料的结果。
§ 2.1.
§ 2.2.
§ 2.3.
§ 2.4.
§ 2.5.
§ 2.6.
§ 2.7.
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
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
5.通知区域图标
--text=文本
指定显示在通知区域的文本。
下面的脚本示范了如何创建一个通知区域图标:
#!/bin/sh zenity --notification\ --window-icon="info" \
--text="有系统更新软件包!"
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 中不能运行"
7.消息框
Zenity 可以创建四种消息框:
§ 错误框
§ 信息框
§ 询问框
§ 警告框
对于每一种类型,使用 --text 选项来指定显示在对话框里的文本。
§ 7.1.
§ 7.2.
§ 7.3.
§ 7.4.
7.1.错误框
使用 --error 选项创建一个错误框。
下面的脚本示范了如何创建一个错误框:
#!/bin/bash
zenity --error \
--text="找不到 /var/log/syslog."
7.2.信息框
使用 --info 选项创建一个信息框。
下面的脚本示范了如何创建一个信息框:
#!/bin/bash
zenity --info \
--text="全部合并。更新第 3 个文件,总共 10 个。"
7.3.询问框
使用 --question 选项创建一个询问框。
下面的脚本示范了如何创建一个询问框:
#!/bin/bash
zenity --question \
--text="您确定要执行吗?"
7.4.警告框
使用 --warning 选项创建一个警告框。
下面的脚本示范了如何创建一个警告框:
#!/bin/bash
zenity --warning \
--text="断开电源以防止冲击电流。"
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.文本框
使用 --entry 选项,创建一个文本框,Zenity 将文本框的内容返回到标准输出。
文本框支持以下选项:
--text=文本
指定在文本框中显示的文本。
--entry-text=文本
指定显示在文本框的文本域里的文本。
--hide-text
隐藏文本框中文本域中的内容。
下面的脚本示范了如何创建一个文本框:
#!/bin/sh
if zenity --entry \
--title="添加一项" \
--text="请输入您的密码:" \
--entry-text "密码" \
--hide-text
then echo $?
else echo "没有输入密码"
fi
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.范围对话框
使用 --scale 选项来创建一个范围对话框。注意:
范围对话框支持以下选项:
范围选项
--scale 显示范围对话框
--text=文字 设置对话框文字
--value=数值 设置初始值
--min-value=数值 设置最小值(必须要小于1)
--max-value=数值 设置最大值
--step=数值 设置步进大小
--print-partial 打印部分值
--hide-value 隐藏值
使用范例:$ zenity --scale --min-value=-100 --max-value=60000 --text="test"