snack程序设计

来源:互联网 发布:黑人和小女孩网络对唱 编辑:程序博客网 时间:2024/06/09 16:11

snack程序设计

Share
Tweet

简介

Snackpythonnewt的接口Newt是一个Red Hat linux安装程序而设计的基于文本的窗口开发工,并不依赖X包, 所Snack'可以为安装程序设计简单的窗口界面。下面分别介绍使snack的一般步骤和各组件的使

snack的一般步骤,示例代码如1

清单1.创建snack一般步骤示例代码

from snack import *
screen = SnackScreen()
upperleft = Widget()
upperrrght = Widget()
lowerleft = Widget()
lowerright = Widget()
g = Grid(2, 2)
g.setField(upperleft, 0, 0, (0,,0, 1, 1))
g.setField(upperright, 1, 0)
g.setField(lowerleft, 0, 1)
g.setField(lowerright, 1, 1, growx = 1, growy =1)
f = Form()
f.add(g)
result = f.run()
screen.popWindow()
screen.finish()

代码解释如下。

  1. 首先调用screen = SnackScreen()将终端的背景刷成蓝色,直到调screen.finish()蓝色的屏幕才能消失

  2. 定制要使用的snack组件

    upperleft = Widget()

    upperrrght = Widget()

    lowerleft = Widget()

    lowerright = Widget()

  3. 使用gird设置组件的布局,

    g = Grid(2, 2)g2Widget2Widget的网格

    g.setField(upperleft, 0, 0, (0, 0, 1, 1)):其(0,0,1,1)(left, top, right, bottom),用来确定组件周围的空

    g.setField(upperright, 1, 0)

    g.setField(lowerleft, 0, 1)

    g.setField(lowerright, 1, 1, growx = 1, growy = 1):其中growx = 1, growy = 1指当组件大小和周围的不一致时,用来调整大小

  4. screen.gridWrappedWindow(g, "Title Text")

    这句必须调用,用g绑定到一window

  5. f = Form() f.add(g) result = f.run() screen.popWindow()

    fg加入到消息循环机制中

  6. screen.finish()

    退snack,否则终端一直呈现蓝色,无论crtrl+cctrl+z都不能退

 

相关组件(Widget)介绍

组件详细介绍如表1所示。

1.组件介绍

组件类

参数

方法

Buttontext)

text: 显示的名称

(下同)

 

CompactButton(text)

Button类,但显示的按钮更简洁

 

 

Checkbox

(text, isOn = 0)

 

isOn=0:未选中

isOn=1:选中

value(): 返回box是否被选中

Selected(): 返回box当前是否被选中

setFlags(flag,senese)

Flag: FLAG_DISABLED

Sense:

FLAGS_SET:true

FLAGS_RESET:false

FLAGS_TOGGLE:flag的相反

SingleRadioButton

(text,group,isOn = 0)

group:如果当SingleRadioButton对象与上一个为一组,group值为上SingleRadioButton

selected() :返回SingRadioButton是否被

Listbox(height,

scroll = 0,

returnExit = 0,

width = 0,

showCursor = 0):

列出可选,但每次只能选择一,如果想选择多,可使CheckBoxList

 

heightListbox里显示的行数

scroll:是否显示滚动条;

returnExit: 如果box内按ENTER时,窗口将退出

width:设置Listbox的宽度;

showCursor:值为1Listbox内的当前条目会有光标闪

append(text, item): 增加一个选项Listbox末尾,item为选ID

Insert(text, item, before): before选项前添加,如beforeNone,则添加到开头

delete(item) : 删除选项item

replace(text, item): item当前的名称替换为text

current(): 返回用户当前的选项的item

setCurrent(item): 设置item为当前选项;

clear(): 清空Listbox内的所有选项。

Textbox(width,

height, text,

scroll = 0,

wrap = 0)

显示文本

 

scroll:设置有无滚动条;

wrap:设置是否确保所有文本box

setText(text): 设置在Textbox上显示的文本

Scale(width, total)

进度条组件

total: 进度条显示的最大值

set(amount): 用来设置当前进度,其中amount是一个0total之间的数,

Entry(width,

text = "",

hidden = 0,

password = 0,

scroll = 1,

returnExit = 0)

输入框

width:输入文本的大小;

text:输入框的初始文本;

hidden:是否隐藏text

password:输入text是否未密码,如果是密码,将显示*

scrollscroll=1,则当文本太长不足以显示的时候,用户可以水平滚

value():返回Entry里当前的文

set(text): 设置当前要显示的文本为text

setFlags(flag, sense): Checkbox的成员setFlag

RadioBar(screen,

buttonlist)

用来创建SingleRadioButton

buttonlisttuple组成list,每tuple有三个元素,第一个SingleRadioButton显示的名称,第二个是SingleRadioButton被选时的返回对象,第三011代表默认选中

add(title, value, default = None):添加一个新SingleRadioButtonRadio Button组里,value参数getSeletion函数的返回对象

getSelection():返回当前选中Radio Button的相关的返回对象。

ButtonBar(screen, buttonlist): 提供一组buttons

Buttonlist是由描button的三个不同类型组成,分(text, return value, hotkey),两个元素代表没有hotkey,string类型代表返回对string

 

 

CheckboxtTree(height, scroll = 0)

由多个Checkbox对象组成。

 

append(text, item = None, selected = 0):添加Checkboxtree的末尾,其selected=0始化未选 等于1选中;

getCurrent(): 返回光标高亮的元素;

getSelection(): 返回所有选中元素的list

setEntry(item, text): 改变与item相关的text

setEntryValue(item, selected = 1): 设置item是否选中;

getEntryValue(item):返回item是否被选中;

addItem(text, path, item = None, selected = 0)

addIterm详解

addIterm方法append方法类似,但path比较特殊,决定添加Checkbox的位置它的类型tuplesnackArgs['append']tuple的最后tuple的结束

清单2. addItem示例代码片段

tree = CheckboxTree(height = 5, scroll = 1)
tree.addItem("First",(snackArgs['append'], )) 
tree.addItem("Second",(snackArgs['append'], ))
tree.addItem("A", (0,snackArgs['append'])) 
tree.addItem("B", (0,snackArgs['append'])) 
tree.addItem("X", (0, 1,snackArgs['append']))

开始tree只显示FirstSecondFirst为可扩Second为一Checkbox,扩FirstACheckboxB是一个可扩展的,扩展XCheckbox。运行结果如12所示

1.开始显示的界面

image
 

2.点击<+>后显示的界面

image
 

常用对话框示例

生成一个具有Listbox的窗口

清单3.生成Listbox窗口示例代码

ListboxChoiceWindow(screen,title="ListboxChoiceWindow Demo", text="List:",items=[("list1",1),("list2",2)], 
buttons = ('Ok', 'Cancel'), width = 40, scroll =0, 
height = -1, default = None, help = None)
运行显示的界面如图3所示。

3. ListboxChoiceWidnow示例界

image

 

按钮窗口

清单4.按钮窗口示例代码

ButtonChoiceWindow(screen,title="ButtonChoiceWindowDemo", 
text= "text:", buttons = ['Ok','Cancel'], 
width = 40, x = None, y = None, help = None)

运行结果如图4所示。

 

4. ButtonChoiceWindow示例界

image
 

输入框窗口

清单5.输入框窗口示例代码

EntryWindow(screen, title="EntryWindowDemo",text="text:", prompts=["entry1", "entry2","entry3"], allowCancel = 1, 
width = 40, entryWidth = 20, buttons = [ 'Ok','Cancel' ], 
help = None)
运行结果如图5所示。

5. EntryWindow示例界面

image
 

小结

snack提供pythonnewt的接口,借snack可开OS安装程序字符界面。本文主要介绍snack的功能,使用步snack组件的使用方法,为今后的开发工作提供帮

参考资源

  • http://www.wanware.com/tsgdocs/snack.html

  • http://www.ibm.com/developerworks/cn/linux/guitoolkit/newt/index.html

 

 

 


0 0
原创粉丝点击