Shell的GUI编程
2016-01-31 21:20
726 查看
Shell的GUI编程
dialog软件包是一个制作窗口的极好工具,利用ANSI转义控制码在文本环境中重新创建了标准Windows对话框。可以很方便地将这些对话框合并到shell脚本中来与脚本用户进行交互。dialog命令使用命令行参数确定生成的Windows小部件的类型。dialog软件包目前支持的小部件类型如下:
小部件 | 描述 |
---|---|
calendar | 提供一个可以在其中选择日期的日历 |
checklist | 显示多个项目,这些项目均可以被打开或关闭 |
form | 允许建立一个可以填写标签和文本字段的表单 |
fselect | 提供一个文件选择窗口以浏览文件 |
gauge | 显示一个说明完成百分比的仪表 |
infobox | 显示信息而不等待响应 |
inputbox | 显示单一的文本窗体框以输入文本 |
inputmenu | 提供一个可变及的菜单 |
menu | 显示一系列可供选择的选项 |
msgbox | 显示消息并要求用户选择OK按钮 |
pause | 显示一个说明指定暂停阶段状态的仪表 |
passwordbox | 显示一个可以隐藏输入文本的单一文本框 |
passwordform | 显示一个带标签和隐藏文本字段的表单 |
radialist | 提供一组菜单项,但是值可选择一个项目 |
tailbox | 利用tail命令在滚动的窗口中显示文件中的文本 |
tailboxbg | 与tailbox相同,但是需在背景模式下操作 |
texbox | 在滚动窗口中显示文件的内容 |
timebox | 提供一个用来选择时、分、秒的窗口 |
yesno | 提供一个含有Yes/No按钮的简单消息 |
dialog --widget parameters #parameters定义该小部件窗口的大小以及它所需的任何文本
- 每个对话框小部件均以两种形式提供输出:
1. 使用STDERR:`dialog --inputbox "Enter your age :" 10 20 2>age.txt` 2. 使用退出代码状态
dialog常用部件
msgbox小部件:
dialog --msgbox text height width。dialog命令将使用heigth和width参数自动调整文本以适应所创建的窗口大小。放置标题,使用
--title参数以及标题文本。必须放在–msgbox参数之前。
yesno小部件:e.g:
dialog --title "test" --yesno "我是白痴吗?" 10 20
输入框小部件(inputbox):dialog命令将文本字符串的值发送到STDERR。必须重定向此值来获取答案:e.g:
dialog --inputbox "Enter your age:" 10 20 2>age.txt
文本框小部件(textbox):e.g:
dialog --textbox /etc/passwd 50 150窗口包含参数指定的文件的文本。
菜单小部件(menu):
dialog --menu "Sys Admin Menu"20 30 10 1 "Display disk space" 2 "Display users" 3 "Display memory usage 4 "Exit " 2>test.txt第一个参数定义菜单的标题。后两个参数定义菜单窗口的高度和宽度,而第三个参数定义同时出现在窗口中的菜单项数。这些参数之后,必须添加菜单项目对。
fselect小部件:浏览文件从而选择文件:e.g:
dialog --title "Select a file" --fselect $HOME/ 10 50 2>test.txtfselect后的第一个参数是窗口所使用的起始位置。
dialog命令选项
选项 | 描述 |
---|---|
-add-widget | 除非按Esc或Cancel键,否则继续进入下一个对话框 |
-aspect ratio | 指定窗口宽度/高度的纵横比 |
-backtitle title | 指定在屏幕顶部、背景上显示的标题 |
-bedin x y | 指定窗口左上角的起始位置 |
-cancel-label lable | 为Cancel按钮指定一个可供选择的标签 |
-clear | 使用对话框默认背景色清除显示 |
-colors | 允许在对话框文本中嵌入ANSI颜色代码 |
-cr-wrap | 允许在对话框文本中加入换行符,强制换行。 |
-create-rc file | 转储样本配置文件至指定文件 |
-defaultno | 将yes/no对话框的默认值上设置为NO |
-default-item string | 设置检查列表、表单或菜单对话框的默认项目 |
-exit-label label | 为Exit按钮指定可供选择的标签 |
-extra-button | 在OK和Cancel按钮之间,显示一个其他按钮 |
-extra-label label | 为Extra按钮指定可供选择的标签 |
-help | 显示dialog命令帮助信息 |
1. 如果Cancel或No按钮可用,请检查dialog命令的退出状态。
2. 重定向STDERR以获取输出值。
#!/bin/bash #using gdialog to create a menu temp=`mktemp -t test.XXXXXX` temp2=`mktemp -t test2.XXXXXX` disk() { df -k > $temp gdialog --textbox $temp 20 60 } users() { who > $temp gdialog --textbox $temp 20 60 } memusage() { cat /proc/meminfo > $temp gdialog --textbox $temp 20 60 } while [ 1 ] do gdialog --menu "Sys Admin Menu" 20 30 10 1 "Display disk space" 2 "Display users" 3 "Display memory usage" 0 "Exit" 2> $temp2 if [ $? -eq 1 ] then break fi selection=`cat $temp2` case $selection in 1) disk;; 2) users;; 3) memusage;; 0) break;; *) gdialog --msgbox "Sorry,invalid selection" 10 30 esac done rm -f $temp 2> /dev/null rm -f $temp2 2> /dev/null
KDE和GNOME桌面环境都扩充了dialog命令:KDE环境下默认包括kdialog软件包,GNOME环境下默认包括gdialog和zenity软件包。
相关文章推荐
- android wifi 无线调试
- 运维入门
- 动态清空 nohup 输出文件
- install scrapy with pip and easy_install
- 如何重装TCP/IP协议
- Windows 8 官方高清壁纸欣赏与下载
- 谁是桌面王者?Win PK Linux三大镇山之宝
- 对《大家都在点赞 Windows Terminal,我决定给你泼一盆冷水》一文的商榷
- Windows Clang开发环境备忘
- 从Windows系统下访问Linux分区相关软件
- Linux Shell常用技巧
- 肯特·贝克:改变人生的代码整理魔法
- 对《大家都在点赞 Windows Terminal,我决定给你泼一盆冷水》一文的商榷
- Windows下搭建本地SVN服务器
- 你应该学习哪种编程语言?
- Shell 脚本编程陷阱
- 利用开源软件打造自己的全功能远程工具
- Visual Studio 2012 示例代码浏览器 - 数以千计的开发示例近在手边,唾手可得