http://bandari.fans.blog.163.com/blog/static/1694189062012211114221121/
很久之前分析一个脚本时知道了这个程序,man的解释是 ‘GTK+对话框程序’zenity的使用方法用 “zenity --help-all”或者 man zenity 就能得到,我在这里翻译兼实践介绍下吧。
zenity使用在shell环境下,通过它能轻松的写出图形界面的shell脚本,非常的使用,只要会shell就一定会用它。文章中所有特大号的选项每次只能用一个,后面的紧跟的参数必须和此选项一块运行
先看zenity的全局参数,全局参数就是指直接跟在zenity后面的,不管之后用什么参数,这些都有用的参数。zenity –-title=TITLE 设定对话框的名称--window-icon=ICONPATH 设置窗口图标,在使用error,info,question,warning中任意一个参数时显示。(可以不设置,使用默认)--width=xx 对话框宽--height=xx 对话框高--timeout=TIMEOUT 超时时间,单位为秒。(和error等提示窗口并用,可以让窗口在指定时间内消失)例:
zenity --error --timeout=10 --width=300 –height=300
显示一个宽高都是300像素的错误对话框,10秒后自动关闭,效果如下:
--list 选项(显示表格,返回值为选择的东西) --text=TEXT list的名称 --column=NAME1 NAME1为第一列名称 --coulmn=NAME2 NAME2为第二列名称,以此类推 aa bb cc dd list中的值, --checklist 对钩,如果用了这个参数,第一行全部会变为方框,可以钩选,上面aa和cc如果用TRUE代替,则默认bb和dd前面就有对钩,如下--radiolist 按钮,如果有这个参数,则第一列全部变为按钮而不是值。例:zenity --list --text=请选择 --column=xx --column=yy aa bb cc dd有两列,四个值,所以自动划分为两行,如果我选择第一行,则返回值为aa--multiple 允许多选,返回值为aa|cc ,不能和radiolist参数共用--editable 允许编辑--print-column= ALL/1/2 如果有多行,使用ALL,返回选择行的所有内容,1则返回这行的第一个值,2为第二个,以此类推。--hide-column=NUM 隐藏某一列,在上例中,如果NUM为2,则不显示yy那行--hide-header 隐藏行的标题,在上例中就是不显示xx和yy例:
zenity --title=select --list --text=请选择 --multiple --hide-column=2 --hide-header --print-column=2 --column=xx --column=yy aa 'ls -al' cc 'ls -l'
列表有两行两列,隐藏第二列,程序返回值是行中第二个值如果我选择aa,则程序返回值为“ls -al”
--calendar选项--text=TEXT 显示说明--day=DAY --month=MONTH 显示某月某天--date-format=PATTERN 调整输出格式(如:%d/%m/%y)例:
zenity --calendar --day=1 --month=2 --year=2012 --date-format=%d/%m/%y
默认显示2012年2月1号,可以选择别的日期,返回值就是选择的日期返回值为11/03/12
--entry 选项(输入窗口) --text=TEXT 显示说明 --entry-text=XX 默认对话框中显示什么文字 --hide-text 用***代替输入,安全例:
zenity --entry --entry-text=输入密码
返回值就是输入的东西。
--error 的选项--text=TEXT 显示的错误信息--no-wrap 不允许换行例:
zenity --error --text="errorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerror" --no-wrap
--info 选项--text=TEXT 显示说明--no-wrap 不允许换行用法和error差不多,只是图标不一样。--warning 选项--text=TEXT 显示的错误信息--no-wrap 不允许换行用法和error差不多,只是图标不一样。
--file-selection 选项(选择文件),返回值为绝对路径--filename=FILENAME 设置默认选择的目录或路径--multiple允许选择多个文件,返回值之间用“|”隔开--directory选择文件夹而不是文件--save 开启保存模式,可以保存文件夹或者文件--separator=SEPARATOR设置多个返回值之间间隔符--confirm-overwrite当文件存在时提示是否覆盖--file-filter=NAME1 --file-filter=NAME2 将文件1和2过滤出来设置文件过滤,可以设置为*.pdf这样的,就能只显示pdf格式的文件,便于选择
--notification 托盘信息图标--text=TEXT 显示说明--listen 倾听标准输入stdin的命令,可识别的命令有message', 'tooltip', 'icon', 和'visible'用“:”隔开命令和内容,用法:'message: Hello world', 'visible: false', 或 'icon: /path/to/icon'我会用的只有message。例:
echo message:$(zenity --calendar --day=1 --month=2 --year=2012 --date-format=%d/%m/%y)| zenity --notification --text=aa --listen
选择一个日期,然后利用托盘显示出来,这是显示结果其实gnome2(别的不清楚了)下有个专门显示托盘信息的程序notify-send 直接在后面加要显示的内容就行(最好用“ “把内容扩起来)
--progress 选项(进度条)--text=TEXT 显示说明--percentage=INT 设置起始刻度(0~100)--auto-close在100%时自动关闭--auto-kill如果按下了cancel后关闭父进程--pulsate使进度条闪动--no-cancel隐藏cancel按钮例:
find $HOME -name '*.pdf' | zenity --progress --pulsate
--question 选项--text=TEXT 显示的问题为TEXT--no-wrap不允许换行--ok-label =??设置OK按钮的文字(就是将默认的OK改为什么文字)--cancel-label设置cancel按钮的文字(就是将默认的cancel改为什么文字)如果选择OK,,则$?(上条命令的执行状态)的值为0,否则为1.例:
zenity --question --text=今天是2011年? --ok-label=是 --cancel-label=否
--scale 刻度--text=TEXT 显示说明--value=NUM 设定刻度初始值--min-value=VALUE设置最小值--max-value=VALUE设置最大值--step=VALUE设置鼠标滑轮滑一下值变化多少(可以是负的,但必须是整数),与鼠标设置还有关,step的值乘鼠标滑动一下翻的行数就等于滑一下改变的数值。。我的鼠标滑轮滑一下可以翻两行,step设为1时,每滑下鼠标滑轮数值就变化两个单位--print-partial托动时,每停一下就返回一个值--hide-value隐藏刻度值例:
zenity --scale --value=50 --min-value=30 --max-value=70 --step=1
--text-info 显示文件中的内容--filename=PATH/FILENAME 文件路径和文件名--editable 可编辑返回值就是显示出来的内容例:
zenity --text-info --filename=/home/flow/b --editable
随便打开了一个文件
--color-selection 颜色选择--color=#00000 设置默认颜色,--show-palette 显示调色板返回值是html格式的颜色值
zenity --color-selection --show-palette --color=#dd6060
--password 选项--username 显示用户名和密码输入框例:
zenity --password --username
man手册中的例子(稍微改了下):
rm `zenity --title="Select a file to remove" --file-selection --multiple --separator=\ `
执行这条,就能删除选择的文件,可以多选哦。
find . -name '*.h' | zenity --list --title "Search Results" --text "Finding all header files.." --column "Files"
找出当前目录下所有.h的文件并输出到列表
find $HOME -name '*.pdf' | zenity --progress --pulsate
寻找pdf文件的时候显示正在运行。
zenity --list --checklist --column "Buy" --column "Item" TRUE Apples TRUE Oranges FALSE Pears FALSE Toothpaste
之前还写过一篇实例教材,请访问: http://bandari.fans.blog.163.com/blog/static/169418906201191404942951/还有一个外国人用zenity写的音频格式转换软件,详细介绍请看:http://bandari.fans.blog.163.com/blog/static/1694189062011528115458788/
花了四个多小时编辑的,绝对原创,要想转载请标明出处,下面附pdf格式下载地址:http://files.myopera.com/flow1058424266/files/zenity.pdf