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的界面:
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()
界面展示:
第一个界面:
点击按钮1后出现界面2
输入文字,点击按钮,显示信息
linux python 图形界面开发_python在linux制作图形界面(snack)相关推荐
- 嵌入式linux界面开发,基于嵌入式Linux平台实现GUI系统的设计方案
描述 嵌入式图形用户界面( GUI, Graphic UserInterface)系统作为嵌入式系统中的一大关键技术,为用户提供设备的控制接口,其性能的好坏,界面的美观程度,影响着用户对产品的购买意愿 ...
- python 关闭窗口事件_python在Linux平台下捕获窗体关闭事件
Python 在建立界面模块的时候可能会出现,界面的窗体上的关闭按钮按下,界面退出后,但是再次启动的时候无法启动界面, 因为界面这个时候相当于做了隐藏,类似于Qt中的Held. 解决这样的问题.一般有 ...
- python 黑客工具开发_python黑客软件的搜索结果-阿里云开发者社区
带你读<Python科学计算(原书第2版)>之一:导论 计算机科学丛书点击查看第二章点击查看第三章Python科学计算(原书第2版)Python for Scientists, Secon ...
- Python量化交易平台开发教程系列7-顶层GUI界面开发(1)
原创文章,转载请注明出处:用Python的交易员 前言 终于有时间来写第一篇顶层GUI界面开发相关的教程了,之前实在是事情太多,跟各位读者抱个歉. 整合底层接口的各项功能到中层引擎中后,当我们开发顶层 ...
- python音视频开发_Python音视频开发:消除抖音短视频Logo的图形化工具实现
一.引言 在<Python音视频开发:消除抖音短视频Logo和去电视台标的实现详解>节介绍了怎么通过Python+Moviepy+OpenCV实现消除视频Logo的四种方法,并提供了详细的 ...
- ROS Qt5 librviz人机交互界面开发四(添加rviz显示界面)
本系列教程文章专栏: ROS机器人GUI程序开发 本系列课程已上线古月学院,欢迎感兴趣的小伙伴订阅: ROS Qt开发环境搭建以及基础知识介绍 ROS人机交互软件的界面开发 ROS Rviz组件开发方 ...
- python实现linux命令输出两列_Python实现Linux命令xxd -i功能
def Xxdi(): #解析命令行选项及参数 ([base, cols, strip], [inFile, outFile]) = ParseOption() import os if os.pat ...
- python读取进程内存_Python读取Linux内存进程错误(/ proc / $pid / mem...
我已经在某些Linux发行版(Debian,Linux Mint -)上测试了以下代码,并且可以正常工作,但是在CentOS下,即使我以root身份运行,也会出现错误: #!/usr/bin/env ...
- python连接linux服务器读取txt文件_python 读取Linux服务器上的文件方法
使用Python语句,读取Linux远端服务器上的文件打印到控制台的代码实现: 下载包:paramiko import paramiko #服务器信息,主机名(IP地址).端口号.用户名及密码 hos ...
最新文章
- php+羊,PHP之羊生小羊的问题
- Java中程序初始化的顺序
- egg.js连接mysql数据库遇到的问题
- MiguelCatalan/MaterialSearchView
- java注释详解--javadoc注释
- aop切面排除某个类_AOP 你看这一篇就够了
- json mysql 字段 默认值_MySQL中的JSON类型
- php数组为什么其他语言,PHP语言特性和各版本的差异
- ssl初一组周六模拟赛【2018.4.21】
- mysql死锁无法查询_MySQL死锁导致无法查询
- 免费制作微信小程序开发关于旅游_教大家怎么一步步免费自己做微信小程序
- jsp 运用 session 登录输出
- “OSPF” 开销值、协议优先级及计时器的修改
- java中Action层、Service层和Dao层的功能区分
- 《为自己工作——世界顶级设计师成功法则》—第1章1.2节有同情心
- iPhone手机微信下载的文档传输到win10系统桌面
- SVM-sklearn
- 如何利用MATLAB做非线性一元回归,Matlab一元非线性回归分析
- Pycharm 教育版下载/安装 无需注册破解
- MP地面站二次开发教程(二)MP的框架与修改
热门文章
- 用python解决生活问题_Python解决生活问题之闹钟程序的实现
- python re 匹配多行_Python正则表达式,看这一篇就够了
- 记事本linux命令换行符,Windows 10版记事本应用终于支持Linux/Mac换行符 排版不再辣眼睛...
- postek二次开发_20190626_二次开发BarTender打印机_C#代码_一边读取TID_一边打印_打印机POSTEK...
- linux怎么安装32电脑上,linux – 如何在Ubuntu上安装mingw32?
- 别再双塔了!谷歌提出DSI索引,检索效果吊打双塔,零样本超BM25!
- Transformer太大了,我要把它微调成RNN
- Step-by-step to LSTM: 解析LSTM神经网络设计原理
- 不要再纠结卷积的公式啦!0公式深度解析全连接前馈网络与卷积神经网络!
- 论文浅尝 | 嵌入常识知识的注意力 LSTM 模型用于特定目标的基于侧面的情感分析...