linux 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的界面:

261334026667703.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()

界面展示:

第一个界面:

261405054002260.bmp

点击按钮1后出现界面2

261405318073726.bmp

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

261405581823435.bmp

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489271.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚拟搭建局域网模拟器_巧用虚拟局域网,快速搭建私有云,一步就能搞定

前段时间公司一直在使用局域网来进行文件共享,用一台电脑把某个文件夹在局域网里共享出来,其他电脑远程访问,但是这样使用太麻烦,要是主电脑忘记开机,其它人就用不了。再就是,一旦离开公司之后,…

5个层级带你看清一颗芯片的内部结构

来源:北京物联网智能技术应用协会导 读在我们阐明半导体芯片之前,我们先应该了解两点。其一半导体是什么,其二芯片是什么。

python使用shell命令_python 调用shell命令的方法

在python程序中调用shell命令,是件很酷且常用的事情…… 1. os.system(command) 此函数会启动子进程,在子进程中执行command,并返回command命令执行完毕后的退出状态,如果command有执行内容,会在标准输出显示。这实际上…

java中必检异常有哪些_Java面试题经典面试题220道(附答案)

Java基础:1.JDK 和 JRE 有什么区别?2. 和 equals 的区别是什么? 解读3. 两个对象的 hashCode() 相同, 那么 equals() 也一定为 true吗?4. final 在 Java 中有什么作用?5. Java 中的 Math. round(-1. 5) 等…

11项关键先进制造技术解读!

来源:中国指挥与控制学会图片:来源于网络上届美国总统奥巴马非常重视制造业。其发起成立的“先进制造业合作委员会”,Advanced Manufacturing Partnership,就未来制造业的发展做出了展望,重点规划11个技术领域&#xf…

网站程序数据库怎么上传到服务器上,网站的数据库怎么上传到服务器

网站的数据库怎么上传到服务器 内容精选换一换通常在将数据导入数据库前,即将入库的数据已经在相关主机上了。我们称这种保存着待入库数据的服务器为数据服务器。此时,只需检测以确认数据服务器和GaussDB(for openGauss)集群能够正常通信,并查…

知道接口地址 如何传数据_数据不知道如何可视化?一款工具推荐给大家

之前我们介绍过 Python 里面的一些数据分析和可视化工具,比如 Pandas、Modin、Dash 等。今天要介绍一款标星 12.1K 的数据可视化工具 bokeh,优雅、简洁、高性能的交互式可视化库,同时支持大数据量和流式数据。其中 PyPI 和 Conda 每月安装超过…

c# 从一组数中随机抽取一定个数_Python随机模块22个函数详解

随机数可以用于数学,游戏,安全等领域中,还经常被嵌入到算法中,用以提高算法效率,并提高程序的安全性。平时数据分析各种分布的数据构造也会用到。random模块,用于生成伪随机数,之所以称之为伪随…

读书人:人机融合中的深度态势感知

雅典学院(拉斐尔)来源:人机与认知实验室“你现在的气质里,藏着你走过的路,读过的书和爱过的人。"— 电影《卡萨布兰卡》里的一句话《追问人工智能》--刘伟 - 读书人视频如下:https://www.bilibili.com…

根据id 隐藏_明星ID价值四位数?吃鸡玩家崩溃:打工一个月工资还没名称值钱...

01你知道吗?和平精英游戏名称也很值钱?——最近,有这样一条消息出现在了我的面前,某和平精英角色明星名称的价格居然被捧到了千元之上,对,各位没有看错,虽然只是一个普普通通的游戏名称&#xf…

范式变革与规律涌现:世界科技发展新趋势

来源:学习时报新科技革命与产业变革持续展开,以人工智能为代表的新兴使能技术驶入“快车道”,世界科技创新被认为正在进入“认知革命”的阶段——对生命过程的“精微刻画与操作”和对人类智能的“逆向工程与强化”。趋势特征从“大停滞”迈向…

Unity5和WebGL移植指南的一些总结

对于手游开发者来说,更新版本往往意味着非常复杂的过程,你需要根据反馈做更新、测试、提交然后等待审核,而由于不需要客户端依赖,页游往往是快速测试游戏版本的最佳途径,很多人可能都知道Unity 5可以再不用Unity Web P…

java indexof方法_【3-14】Java中集合类list的增删改查

Hello,大家好,我是大家最亲爱的siki老师,每天都会在这里为大家带来一个Java语法中有趣的知识点,Q群175158287,欢迎同大家多多交流哈!今天给大家带来的是Java中list类的使用,java.util 包提供了l…

清华大学孙富春教授:基于知识智能的机器人技能学习

来源:学术通在刚结束的2019中国人工智能产业年会分论坛——“知识智能及其产业应用论坛”上,清华大学计算机科学与技术系教授、中国人工智能学会副理事长、国家杰青孙富春教授发表了题为《基于知识智能的机器人技能学习》的报告。孙富春教授报告聚焦人工…

图书管理系统可行性分析报告范例_会做可行性分析报告贺州专家团队*金

金兰8564ertyu-03会做可行性分析报告贺州专家团队*金不满意全额,三年内免费提供修改服务,目前,金兰企划已为上万家客户及伙伴提供了专业、精准的商业策划服务,并得到了客户及行业的一致好评。会做可行性分析报告贺州专家团队*金金…

java开发项目实例_Alibaba内部出品Java突击手册,大量开发实战项目分享

前言Java作为目前最受欢迎的语言,每年都会有很多转行、跨行等等地人加入到开发大军中来,但是Java开发也是会遇到瓶颈的,当我们遇到瓶颈的时候就会去寻求发展突破,尤其是从Java开发高级工程师向架构师迈进的时候,需要大…

快递下单后取消订单_网约车定位地点不动,男子别的平台下单,没取消订单要付6.6元...

众所周知,在平台上网约车的时候,要是超出一定时间放鸽子,通常都是要扣除乘客部分钱,反之是司机取消了订单,平台同样会给司机处罚,在路程近的单子上,有些司机是接了后就不想跑,但是也…

5G概述和基本原理

来源:电子万花筒 未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能,互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网&am…

以下选项中python用于异常处理结构_《Python 程序设计》复习题

目录 填空题 一、基础知识 二、序列 三、选择结构与循环结构和函数及面向对象、文件 选择题 一、Python 基础语法 二、基本数据类型 三、程序的控制结构 四、函数和代码复用 五、组合数据类型 六、面向对象: 七、文件 判断题 一、基础知识 二、序列 三、选择结构与循…

去掉边框_安卓也有堪比 VOUN 的加边框应用了,素材丰富到没朋友

iOS 系统中有一款可以给照片加边框的应用 VOUN,里面的相框档次很高,调整后的效果也很不错,但是安卓却没有一款类似的应用。开发者 Joey 尝试找了很多款相似的应用,结果不是广告就是骗流量的辣鸡应用,所以最后独自开发了…