Ran*_*Rag 26 gobject glib pygobject
我一直在研究python-mpdor的源代码,它提到它是
基于gobject,用于简单的事件处理(在高级客户端类中).
有人可以用简单的语言向我解释究竟是什么Glib,GObject以及它们如何相互作用以及它在事件处理中扮演什么角色.
我试着寻找Glib,GObject但我没有找到任何基本的解释.我发现的所有解释都非常技术性和技术性,我的意思是不适合初学者.
此外,有人可以指向一些关于和的初学者教程/文章.GlibGObject
Mic*_*ick 41
GLib和GOBject是两个独立的C库,用于构建GTK + GUI工具包(以及其他内容).
由于C是一种低级语言,因此GLib提供了许多基本功能,例如类似于Python内置的实用程序(文件输入/输出,字符串操作,内存管理,线程等).
由于C不是面向对象的语言,因此GObject提供了一个基于C的对象系统,其中包括属性和继承(同样,已经内置到Python中).在Python中,你很少直接使用GLib(因为Python内置了大部分功能),但GObject依赖于GLib.
所有基于GObject的库都旨在支持与其他语言(如Python)的语言绑定.
至于你的问题,GObject提供了一个称为"信号"的事件系统.从GObject派生的任何对象都可以"发出"信号以发送事件发生的通知.的MPDProtocolClient类python-mpdor是从GObject的获得,因此它可以发射信号.应用程序将这些信号"连接"到这些信号 F
例如,README显示了这个例子:
import gobject
import mpdor
def notify(client, vol):
print "mpd volume is at ", vol + "%"
client = mpdor.client.Client()
client.connect("mixer-change", notify)
gobject.MainLoop().run()
Run Code Online (Sandbox Code Playgroud)
在这种情况下,名为的函数notify与"mixer-change"信号"连接",这意味着只要客户端"发出"该信号,就会调用该函数.该gobject.MainLoop().run()呼叫进入一个" 主事件循环 "(基本上无限循环),其是在事件驱动编程标准概念.
您可能找不到很多GObject/Python教程,但是,如果您学习了一些Python/GTK +基础知识,那么您可能会掌握事件循环,信号和信号回调的概念.(看起来python-mpdor使用的是GTK + 2,它是PyGTK而不是更新的GTK + 3,即PyGObject).
祝好运.
| 归档时间: |
|
| 查看次数: |
10691 次 |
| 最近记录: |