• 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 库要省事得多
  • 相关阅读:
    NO.6: 若不想编译器提供自动生成的函数,就应该明确拒绝
    NO.5: 了解C++编译器默认为你生成的构造/赋值/析构
    NO.4: 确定对象被使用前已被初始化
    NO.3: 尽量使用const
    NO.2: 尽量以const,enum,inline 替换 #define
    NO.1: 视C++为一个语言联邦
    C/C++ exception类
    C/C++ 类成员函数指针 类成员数据指针
    c++中的 Stl 算法(很乱别看)
    自定义类签发校验token-实现多方式登录-自定义反爬类-admin后台表管理字段自定义-群查接口-搜索-排序-分页
  • 原文地址:https://www.cnblogs.com/lexus/p/2818974.html
Copyright © 2020-2023  润新知