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 库要省事得多
  • 相关阅读:
    VisualSVN 服务不能自动启动的问题
    "There is already an open DataReader associated with this Command which must be closed first"错误
    LINQ 中调用存储过程自动绑定列名
    vs2008中调试iis7.0托管的程序
    SQL SERVER 2005的一个怪问题: 在查询结果面板中编辑失败.
    在VS2003下把一个DataTable Update 到数据库
    帮人解决一个小问题:QQ空间登录时脚本错误造成无法登入
    关于Sys未定义错误
    多层母版页嵌套中, 内层母版页的事件默认不触发
    线程同步
  • 原文地址:https://www.cnblogs.com/lexus/p/2818974.html
Copyright © 2011-2022 走看看