美文网首页
python在linux制作图形界面(snack)

python在linux制作图形界面(snack)

作者: adc9c8f3920d | 来源:发表于2017-04-29 12:34 被阅读237次

    snack是一个用于在linux制作图形界面(GUI)的模块,该模块由c编写,而且redhat的系统都自带这个模块。

    1.获取模块

    虽然redhat系统会自带这个模块,但是直接去import snack会提示找不到模块,一个原因是我们重装了系统的python,所以如果直接import不能找到模块,可以通过find命令查找

    1

    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

    Python

    #encoding=utf-8

    __author__ = 'kevinlu1010@qq.com'

    import traceback

    from snack import *

    screen = SnackScreen()  #实例化一个snack界面

    def window():

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

    def main():

    try:

    window()

    except:

    print traceback.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”

    定义回调的方法

    1

    2

    def print_hello():

    print 'hello'

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

    1

    btn1.setCallback(print_hello())

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

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

    #encoding=utf-8

    __author__ = 'kevinlu1010@qq.com'

    import traceback

    from snack import *

    screen = SnackScreen()

    def window1():

    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

    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 main():

    try:

    window1()

    except:

    print traceback.format_exc()

    finally:

    screen.finish()  #关闭snack界面

    return ''

    main()

    界面展示:

    第一个界面:

    点击按钮1后出现界面2

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

    学好python你需要一个良好的环境,一个优质的开发交流群,群里都是那种相互帮助的人才是可以的,我有建立一个python学习交流群,在群里我们相互帮助,相互关心,相互分享内容,这样出问题帮助你的人就比较多,群号是301,还有056,最后是051,这样就可以找到大神聚合的群,如果你只愿意别人帮助你,不愿意分享或者帮助别人,那就请不要加了,你把你会的告诉别人这是一种分享。如果你看了觉得还可以的麻烦给我点个赞谢谢

    学习是对自己最好的投资,而机会属于有准备的人,这是一个看脸的时代,但最终拼的是实力。人和人之间的差距不在于智商,而在于如何利用业余时间,所以没有等出来的辉煌,只有干出来的精彩。其实只要你想学习,什么时候开始都不晚,不要担心这担心那,你只需努力,剩下的交给时间,而你之所以还没有变强,只因你还不够努力,要记得付出不亚于任何人的努力。

    相关文章

      网友评论

          本文标题:python在linux制作图形界面(snack)

          本文链接:https://www.haomeiwen.com/subject/pmezzttx.html