python在linux(anaconda)的图形界面(snack)
来源:互联网 发布:2017年海关数据 编辑:程序博客网 时间:2024/06/04 19:37
一、简介
snack是一个用于在linux制作图形界面(GUI)的模块,该模块由c编写,而且redhat的系统都自带这个模块。Snack是python对newt的接口,Newt是一个为RedHat-linux安装程序而设计的基于文本的窗口开发工具, 并不依赖X包,所以Snack可以为安装程序设计简单的窗口界面。
借助snack可开发Linux安装程序字符界面。在Linux系统安装过程中选择文本模式安装,安装过程中出现的snack的界面。
二、详解
1、获取模块
若在Python中from snack import *,找不到模块,可以使用find命令查找:find /usr/lib64/python2.6/ -name snack.py。显示结果:/usr/lib64/python2.6/site-packages/snack.py,则只需要在目录/usr/lib64/python2.6/site-packages/下复制snack.py和_snackmodule.so这两个文件复制到当前项目中,就能通过from snack import * 来导入snack模块。2、demo程序
(1)代码:#encoding=utf-8import tracebackfrom snack import *screen = SnackScreen() def window1(): btn2 = Button('按钮1') btn3 = Button('按钮2') g = Grid(2, 1) g.setField(btn2, 0, 0) g.setField(btn3, 1, 0) screen.gridWrappedWindow(g, "我的界面1") f = Form() f.add(g) result = f.run() screen.popWindow() #btn2.setCallback(window2()) #设置回调方法为界面2 #btn3.setCallback(leave()) #设置回调方法为离开 if result == btn2: btn2.setCallback(window2()) #设置回调方法为界面2 else: btn3.setCallback(leave()) #设置回调方法为离开 def window2(): def print_name(name): print '你的名称是:%s' % name label = Label('请输入名称:') entry = Entry(10, '') btn1 = Button('确定') g = Grid(2, 2) g.setField(label, 0, 0) g.setField(entry, 1, 0) g.setField(btn1, 1, 1) screen.gridWrappedWindow(g, "我的界面2") f = Form() #实例化一个form f.add(g) #把网格填充到form result = f.run() screen.popWindow() btn1.setCallback(print_name(entry.value()))def leave(): print 'leave' return ''def main(): try: window1() except: print traceback.format_exc() finally: screen.finish() #关闭snack界面 return ''main()(2)运行(有些问题存在)
(3)解释:首先调用screen = SnackScreen() 将终端的背景刷成蓝色,直到调用screen.finish()蓝色的屏幕才能消失;使用gird设置组件的布局,g = Grid(2, 2),g为2个Widget宽,2个Widget的网格;screen.gridWrappedWindow(g, "Title Text")必须调用,用来将g绑定到一个window;screen.finish()退出snack,否则终端一直呈现蓝色,无论按crtrl+c或者ctrl+z都不能退出。
3、snack相关组件
组件类
参数
方法
Button(text)
text: 显示的名称
(下同)
CompactButton(text)
同Button类,但显示的按钮更简洁
Checkbox
(text, isOn = 0)
isOn=0:未选中
isOn=1:选中
value(): 返回box是否被选中
Selected(): 返回box当前是否被选中
setF
Flag: FLAG_DISABLED
Sense:
FLAGS_SET:true
FLAGS_RESET:false
FLAG
SingleRadioButton
(text,group,isOn = 0)
grou
selected() :返回
Listbox(height,
scroll = 0,
returnExit = 0,
width = 0,
showCursor = 0):
列出可选
heig
scroll:是否显示滚动条;
returnExit: 如果
width:设置Listbox的宽度;
showCursor:值为1则List
append(text, item): 增加一个
Insert(text, item, before): 在bef
delete(item) : 删除选项item;
replace(text, item): 将item当前的名称替换为text;
current(): 返回用户当前的选项的item;
setCurrent(item): 设置item为当前选项;
clear(): 清空Listbox内的所有选项。
Textbox(width,
height, text,
scroll = 0,
wrap = 0)
显示文本
scroll:设置有无滚动条;
wra
setText(text): 设置在Textbox上显示的文本
Scale(width, total)
进度条组件
total: 进度条显示的最大值
set(amount): 用来设置当前进度,其中amount是一个0到total之间的数,
Entry(width,
text = "",
hidden = 0,
password = 0,
scroll = 1,
returnExit = 0)
输入框
width:输入文本的大小;
text:输入框的初始文本;
hidden:是否隐藏text;
pass
scro
valu
set(text): 设置当前要显示的文本为text
setFlags(flag, sense): 同Che
RadioBar(screen,
buttonlist)
用来创建
butt
add(title, value, default = None
getS
ButtonBar(screen, buttonlist): 提供一组buttons
Butt
Chec
由多个Checkbox对象组成。
append(text, item = None, selected = 0
getCurrent(): 返回光标高亮的元素;
getSelection(): 返回所有选中元素的list;
setEntry(item, text): 改变与item相关的text;
setEntryValue(item, selected = 1): 设置item是否选中;
getE
addItem(text, path, item = None, selected = 0)
4、部分组件代码
(1)ButtonChoiceWindow:#encoding=utf-8from snack import SnackScreen, ButtonChoiceWindowscreen = SnackScreen()ButtonChoiceWindow(screen, 'Fatal Error', 'You do not have enough RAM to install on this machine.\n' '\n' 'Press <return> to reboot your system.\n', ) #buttons = ("OK",))screen.finish()
或:
#encoding=utf-8from snack import *screen = SnackScreen()ButtonChoiceWindow(screen, title="ButtonChoiceWindowDemo", text= "text:choice", buttons = ['Ok','Cancel'], width = 40, x = None, y = None, help = None)screen.finish()
(2)ListboxChoiceWindow:
#encoding=utf-8from snack import *screen = SnackScreen()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)screen.finish()
(3)EntryWindow:
#encoding=utf-8from snack import *screen = SnackScreen()EntryWindow(screen, title="EntryWindowDemo", text="text:", prompts=["entry1", "entry2", "entry3"], allowCancel = 1, width = 40, entryWidth = 20, buttons = [ 'Ok','Cancel' ], help = None)screen.finish()
三、总结
(1)参考:http://www.wanware.com/tsgdocs/snack.html、http://pydoc.org/1.5.2/snack.html、http://www.ibm.com/developerworks/cn/linux/guitoolkit/newt/index.html。(2)若有建议,请留言,在此先感谢!
- python在linux(anaconda)的图形界面(snack)
- python在linux(anaconda)的图形界面(snack)
- 用Linux图形界面在没有图形界面的linux安装oracle
- 在anaconda(python)下安装opencv
- Anaconda 在linux下的安装
- Anaconda 在linux下的安装
- anaconda在Linux下的安装
- 在Windows中显示Linux的图形界面
- linux在图形界面打开文件夹的命令
- 【Python】Python 的图形界面(GUI)编程
- 在windows的Anaconda下编译caffe的python接口(CPU模式)
- 在anaconda python开发套件下进行opencv的安装
- 在anaconda python开发套件下进行opencv的安装
- 关于在anaconda中切换不同的python版本
- Linux下Anaconda的安装及系统自带python和Anaconda切换
- Anaconda (python)安装
- ##在python中安装xgBoost(win64+anaconda)
- 如何在win10配置(python)虚拟环境 anaconda
- Linux IPC实践(1) --匿名PIPE
- Java与CSP数据兼容之一:Java兼容CSP导出的RSA公钥数据
- C#窗体穿参
- 关于 SqlDateTime 溢出
- 使用监听器对Spring bean id进行唯一校验
- python在linux(anaconda)的图形界面(snack)
- TCP/IP学习笔记-面试小结
- 在Eclipse添加Android兼容包(v4/v7appcompat)
- 图像处理之快速均值模糊(Box Blur)
- 开速开发:UIView与XIB关联
- Java与CSP数据兼容之二:Java兼容CSP导出的RSA私钥数据
- eclipse快捷键
- VS2005编译问题LINK : E:/aaa/Debug/aaa.exe not found or not built by the last incremental link; performin
- MAC更改原有用户账户密码