python能做界面吗_python在linux制作图形界面(snack)

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

#encoding=utf-8

__author__ = ‘kevinlu1010@qq.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,不然终端就会一直显示蓝色的页面,而且该终端已经不可以用了。所以在调试的时候,最好用try,finally的形式,确保程序出错也会执行finish方法。

一个snack页面主要有三种对象组成,一种是组件,例如这里的Button,可以查看snack.py查看到所以可用的组件和方法,可用的组件有Button,Label,Text,Textbox,Checkbox等,第二种是网格,网格主要用于布局,网格里面可以嵌套网格,实现复杂的界面布局。第三种就是form,所有要展示的东西都要放在form里面。

这个demo的界面:

20180922045855992721.bmp

3.回调方法

每一个组件都有一个回调方法的接口,我们可以设置组件的回调方法,来相应用户的操作。

例如上面的demo,我们希望在用户按下按钮1时打印一个"hello"

定义回调的方法

defprint_hello():print ‘hello‘

在展示界面的语句即 screen.popWindow()后面加入回调方法的设置

btn1.setCallback(print_hello())

4.有了回调方法,我们就可以实现多页面的跳转了

在上面的demo的基础上,新增加一个window2的页面,有一个label,entry(文本输入框)和按钮,点击按钮后,屏幕输出文本框输入的内容。

#encoding=utf-8

__author__ = ‘kevinlu1010@qq.com‘

importtracebackfrom snack import *screen=SnackScreen()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")

f=Form()

f.add(g)

result=f.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()

界面展示:

第一个界面:

20180922045856139211.bmp

点击按钮1后出现界面2

20180922045856231011.bmp

输入文字,点击按钮,显示信息

20180922045856311093.bmp

原文地址:http://www.cnblogs.com/Xjng/p/3869869.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux下安装snack模块可以按照以下步骤进行操作: 1. 首先,如果你在Python中使用"from snack import *"导入snack模块时出现找不到模块的错误,可以使用find命令查找snack.py的位置。例如,在终端中输入以下命令: ``` find /usr/lib64/python2.6/ -name snack.py ``` 2. 根据find命令的结果,假设找到了snack.py的路径为"/usr/lib64/python2.6/site-packages/snack.py",那么你需要将这个文件以及"_snackmodule.so"文件复制到你的项目中。 3. 在终端中执行以下命令: ``` cp /usr/lib64/python2.6/site-packages/snack.py /path/to/your/project/ cp /usr/lib64/python2.6/site-packages/_snackmodule.so /path/to/your/project/ ``` 其中,"/path/to/your/project/"是你的项目路径。 4. 现在你就可以在你的Python代码中使用"from snack import *"来导入snack模块了。 需要注意的是,snack模块是用于在Linux制作图形界面(GUI)的模块,由C编写,并且在RedHat的系统中默认安装了这个模块。SnackPython对Newt的接口,Newt是一个为RedHat Linux安装程序设计的基于文本的窗口开发工具,不依赖于X包,因此Snack可以为安装程序设计简单的窗口界面。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [pythonlinux(anaconda)的图形界面snack)](https://blog.csdn.net/weixin_32109409/article/details/114912534)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值