首页 运维 网络学院 查看内容

Linux程序设计入门 - Dialog

2005-6-13 15:20 854 0

摘要: dialog是个shellscripts用的,事实上当您下载LinuxKernel时,里面有个scripts/lxdialo...
关键词: dialog title foxman checklist backtitle echo foxmandialog Iseverythingokay radiolist inputbox

dialog是个shellscripts用的,事实上当您下载LinuxKernel时,里面有个scripts/lxdialog目录,其实那就是dialog原始码,只是Linuxkernel为了避免与原有dialog相冲突,将名字修改为lxdialog。当您使用"makemenuconfig"时,便是在用dialog这套工具。另外,Slackware的安装程式,事实上也是用dialog这套工具来做界面的。 您可以利用shellscript来呼叫dialog,也可以利用perl来呼叫它,用以提供较友善的使用者界面。 利用dialog这个工具,您可以在不需要写"艰深"的ncurses的程式的状况下,使用ShellScript,完成很复杂的操作界面,大大减少产品开发时间。 您可以用"mandialog"来查它的使用方法。这里做一些dialog的使用及示范。 dialog--clear 整个萤幕会清除後离开 dialog--create-rcfile dialog支援动态规划,这个功能会产生一个样本。 dialog〔--titletitle〕〔--backtitlebacktitle〕 〔--clear〕〔--separate-output〕box-options --titletitle 对话盒上的标题文字 --backtitlebacktitle 桌面背景的标题 box-options dialog目前提供了yes/nobox,menubox,inputbox,messagebox,text box,infobox,checklistbox,radiolistbox,及gaugebox共九种widget. ExitStatus 如果按下Yes或OK按键,则会返回0。No或Cancel会返回1。如果按下ESC或发生 错误,则会返回-1。 --yesnotextheightwidth 〔foxman@foxman/〕#dialog--title"hello"--backtitle"Dialog" --yesno"Iseverythingokay"2060 --msgboxtextheightwidth 〔foxman@foxman/〕#dialog--title"hello"--backtitle"Dialog" --msgbox"Iseverythingokay"2060 --infoboxtextheightwidth 〔foxman@foxmandialog〕#dialog--title"hey"--backtitle"Dialog" --infobox"Iseverythingokay?"1060 Infobox会在显示讯息後立即离开,在console的状况下,讯息会留下,但在X Terminal下,由於XTerminal会立即将讯息清除,ScreenShot抓不到,因此这 里没有ScreenShot。您可以在console下测试。 --inputboxtextheightwidth〔init〕 〔foxman@foxmandialog〕#dialog--title"hey"--backtitle"Dialog" --inputbox"Iseverythingokay?"1060"yes" --textboxfileheightwidth 〔foxman@foxmancopyright〕#dialog--title"Array30"--backtitle"All ForChinese"--textboxarray302075 textbox很像是个简单的textviewer,它会显示档案中的文字。 --menutextheightwidthmenu-height〔tagitem〕... 〔foxman@foxmandialog〕#dialog--title"MenuExample"--menu"MENU" 20604tag1"item1"tag2"item2"tag3"item3"tag4"item4" --checklisttextheightwidthlist-height〔tagitemstatus〕 ... 〔foxman@foxmandialog〕#dialog--title"CheckListExample" --checklist"CheckList"20604tag1"item1"ontag2"item2"off tag3"item3"ontag4"item4"off --radiolisttextheightwidthlist-height〔tagitemstatus 〕... 〔foxman@foxmandialog〕#dialog--title"RadioListExample" --radiolist"RadioList"20604tag1"item1"ontag2"item2"off tag3"item3"ontag4"item4"off --gaugetextheightwidthpercent 〔foxman@foxmandialog〕#dialog--title"Installation"--backtitle "StarLinux"--gauge"LinuxKernel"106050 gaugewidget在启动後,会从stdin读取percent进来,读到EOF时结束。 配合ShellScript进阶使用 单单知道每个功能如何使用是还不够的,一般您要需要知道如何配合Script来使用。会需要互动的有yesno、inputbox、menu、checklist、radiolist、gauge。 yesno 范例 #!/bin/sh DIALOG=dialog if$DIALOG--title"WCWv.s.NWO"--backtitle"Wrestling" --yesno"Areyoureadytorumble?"560;then echo"Yeahhhhh" else echo"Nap..." fi inputbox 范例 #!/bin/sh DIALOG=dialog if$DIALOG--title"Thefutureishere" --inputbox"Wheredoyouwanttogotomorrow?" 1075"Penguin"2>my_own_destiny then way=`catmy_own_destiny` echo"Mywayis$way" else echo"freakout" fi menu #!/bin/sh ifdialog--title"title" --menu"MENU"206014 tag1"item1"tag2"item2"2>select then selection=`catselect` echo"myselectionis$selection" else echo"go" fi checklist #!/bin/sh ifdialog--title"title" --checklist"checklist"206014 tag1"item1"ontag2"item2"off2>select then selections=`catselect` echo"Myselectionsare:" foriin$selections;do echo$i done else echo"go" fi radiolist #!/bin/sh ifdialog--title"title" --radiolist"checklist"206014 tag1"item1"ontag2"item2"off2>select then selection=`catselect` echo"Myselectionis$selection" else echo"go" fi
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部