网站做排名2015,网站开发人员的要求,做电商网站公司,佛系汉化 wordpresssnack是一个用于在linux制作图形界面#xff08;GUI#xff09;的模块#xff0c;该模块由c编写#xff0c;而且redhat的系统都自带这个模块。
1.获取模块
虽然redhat系统会自带这个模块#xff0c;但是直接去import snack会提示找不到模块#xff0c;一个原因是我们重装…snack是一个用于在linux制作图形界面GUI的模块该模块由c编写而且redhat的系统都自带这个模块。
1.获取模块
虽然redhat系统会自带这个模块但是直接去import snack会提示找不到模块一个原因是我们重装了系统的python所以如果直接import不能找到模块可以通过find命令查找
find / -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.一个snack的demo
#encodingutf-8
__author__ kevinlu1010qq.com
importtracebackfrom snack import *screen SnackScreen() #实例化一个snack界面
defwindow():
btn1 Button(按钮1) #实例化一个按钮组件
btn2 Button(按钮2) #实例化一个按钮组件
g Grid(2, 1) #实例化一个两列一行的网格
g.setField(btn1, 0, 0) #把组件填充到网格中
g.setField(btn2, 1, 0)
screen.gridWrappedWindow(g,我的界面)
f Form() #实例化一个form
f.add(g) #把网格填充到form
result f.run()
screen.popWindow()defmain():try:
window()except:printtraceback.format_exc()finally:
screen.finish()#关闭snack界面
return main()
实例化一个SnackScreen后程序结束时一定要调用finish不然终端就会一直显示蓝色的页面而且该终端已经不可以用了。所以在调试的时候最好用tryfinally的形式确保程序出错也会执行finish方法。
一个snack页面主要有三种对象组成一种是组件例如这里的Button可以查看snack.py查看到所以可用的组件和方法可用的组件有Button,Label,Text,Textbox,Checkbox等第二种是网格网格主要用于布局网格里面可以嵌套网格实现复杂的界面布局。第三种就是form所有要展示的东西都要放在form里面。
这个demo的界面3.回调方法
每一个组件都有一个回调方法的接口我们可以设置组件的回调方法来相应用户的操作。
例如上面的demo我们希望在用户按下按钮1时打印一个hello
定义回调的方法
defprint_hello():print hello
在展示界面的语句即 screen.popWindow()后面加入回调方法的设置
btn1.setCallback(print_hello())
4.有了回调方法我们就可以实现多页面的跳转了
在上面的demo的基础上新增加一个window2的页面有一个labelentry(文本输入框)和按钮点击按钮后屏幕输出文本框输入的内容。
#encodingutf-8
__author__ kevinlu1010qq.com
importtracebackfrom snack import *screenSnackScreen()defwindow1():
btn1 Button(按钮1)
btn2 Button(按钮2) # g Grid(2, 1)
g.setField(btn1, 0, 0)
g.setField(btn2,1, 0)
screen.gridWrappedWindow(g,我的界面1)
fForm()
f.add(g)
resultf.run()
screen.popWindow()
btn1.setCallback(window2())#设置回调方法为界面2
defwindow2():defprint_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()))defmain():try:
window1()except:printtraceback.format_exc()finally:
screen.finish()#关闭snack界面
return main()
界面展示
第一个界面点击按钮1后出现界面2输入文字点击按钮显示信息