zoukankan      html  css  js  c++  java
  • python3 通过 ctypes 直接使用 Gtk 编写 gui(转)_zanpen2000_新浪博客

    python3 通过 ctypes 直接使用 Gtk 编写 gui(转)_zanpen2000_新浪博客

        python3 通过 ctypes 直接使用 Gtk 编写 gui(转)
        [此博文包含图片] (2009-09-14 12:14:09)
        转载▼
        标签:
        python3
        ctyps
        gtk
        gui
        it
            分类: python

        本文来自:python吧

        Python3 现在还缺少许多 Python2 里可用的 C 库,如常见的 PyGtk 不过既然 Python2.5 以后就自带了 ctypes ,所以也可以无须传统的 PyGtk 库, 而直接用 ctypes 干 GUI

        先看个简单的 Gtk 窗口

        teswindow.py

        #!/usr/bin/python3



        # -*- coding: UTF-8 -*-



        import ctypes



        gobject = ctypes.CDLL('/usr/lib/libgobject-2.0.so')



        gtk = ctypes.CDLL('/usr/lib/libgtk-x11-2.0.so')



        gobject.g_type_init ()



        gtk.gtk_init(None, None)



        win = gtk.gtk_window_new(0)



        gtk.gtk_window_set_title(win, ctypes.c_char_p("Gtk TextView"))



        gtk.gtk_window_set_default_size(win, 750, 500)



        view = gtk.gtk_text_view_new()



        gtk.gtk_container_add(win, view)



        gtk.gtk_widget_show_all(win)



        gtk.gtk_main()



        没有使用旧的 PyGtk 库就创建了一个带有文本编辑区的窗口(这代码也可以在 python2.5、2.6 下执行)





        再来点额外的库,比如最近很热的 WebKit, 试试 teswebkit.py

        #!/usr/bin/python3



        # -*- coding: UTF-8 -*-







        import ctypes



        gobject = ctypes.CDLL('/usr/lib/libgobject-2.0.so')



        gthread = ctypes.CDLL('/usr/lib/libgthread-2.0.so')



        gtk = ctypes.CDLL('/usr/lib/libgtk-x11-2.0.so')



        webkit = ctypes.CDLL('/usr/lib/libwebkit-1.0.so')







        gthread.g_thread_init(None)



        gobject.g_type_init()



        gtk.gtk_init(None, None)







        win = gtk.gtk_window_new(0)



        gtk.gtk_window_set_title(win, ctypes.c_char_p("Gtk WebKit"))



        gtk.gtk_window_set_default_size(win, 750, 500)







        view = webkit.webkit_web_view_new ()



        webkit.webkit_web_view_open(view, ctypes.c_char_p("http://www.google.cn/"))







        scrolled = gtk.gtk_scrolled_window_new(None, None)



        gtk.gtk_container_add(scrolled, view)



        gtk.gtk_container_add(win, scrolled)







        gtk.gtk_widget_show_all(win)







        #gtk.gdk_threads_enter()



        gtk.gtk_main()

        这是一个嵌入了 WebKit 浏览器的窗口,显示了 谷歌 主页

        
        python3 <wbr>通过 <wbr>ctypes <wbr>直接使用 <wbr>Gtk <wbr>编写 <wbr>gui(转)




        似乎,我们可以不再需要像以前给 PyGtk、PyWebKit 干的那样,特意去用一套很复杂的方法来生成绑定了, 旧的方法不仅费时费力,没绑定好的库还没法去使用。

        虽然上边的代码显得非常不 pythonic,不过再用一层纯 python 代码来包装成 python 对象, 也是比创建专门的 C 库要省事得多
  • 相关阅读:
    三层框架(原始版)
    Java虚拟机之内存区域
    JDK和JRE的区别
    cookie和session区别与联系
    DAO、Service、Controller及View层级结构梳理
    JavaWeb-四大域对象复习
    Mybatis-实现逆向代理
    Springboot-实现热部署
    排序算法-冒泡排序
    【ERROR 1064 (42000)】MySQL中使用mysqladmin或set修改root密码时提示语法错误
  • 原文地址:https://www.cnblogs.com/lexus/p/2818974.html
Copyright © 2011-2022 走看看