什么是Glib和Gobject?

栏目: C++ · 发布时间: 6年前

内容简介:http://stackoverflow.com/questions/11301074/what-exactly-is-glib-and-gobject
我一直在研究 python-mpdor

的源代码,它提到它是

gobject-based, for easy event handling (in the high-level client  class).

所以,有人可以用简单的方式向我解释什么是Glib和GObject,它们如何相互交互以及它在事件处理中的作用.

我试着看着Glib和GObject,但是我没有找到任何基本的解释.我发现的所有解释都是非常技术性的技术,我的意思是不适合初学者.

另外,有人可以指出一些关于Glib和GObject的初学者教程/文章.

GLib和Gobject是两个独立的C库,其中构建了GTK GUI工具包(除其他外).

由于C是较低级别的语言,所以GLib提供了很多基本功能,如类似于 Python 内置的工具(文件输入/输出,字符串操作,内存管理,线程等).

由于C不是面向对象的语言,所以GObject提供了一个基于C的对象系统,它包括属性和继承(再次,已经内置到Python中).在Python中,您很少直接使用GLib(因为Python具有内置的大部分功能),而GObject依赖于GLib.

所有基于GObject的库旨在支持与其他语言(如Python)的语言绑定.

对于您的问题,GObject提供了一个称为“信号”的事件系统.从GObject派生的任何对象都可以“发出”信号来发送事件的通知. python-mpdor中的MPDProtocolClient类派生自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()

在这种情况下,名为notify的功能与“mixer-change”信号“连接”,这意味着在客户端“发出”该信号时将会调用该功能. gobject.MainLoop().run()调用进入“ main event loop ”(基本上是一个无限循环),这是事件驱动编程中的一个标准概念.

您可能不会找到很多GObject / Python教程,但是,如果您学习了一些Python / GTK基础知识,那么您可能会了解事件循环,信号和信号回调的概念. (看起来像python-mpdor是使用GTK 2,这将是PyGTK,而不是新的GTK 3,这是PyGObject).

祝你好运.

http://stackoverflow.com/questions/11301074/what-exactly-is-glib-and-gobject


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Bandit Algorithms for Website Optimization

Bandit Algorithms for Website Optimization

John Myles White / O'Reilly Media / 2013-1-3 / USD 19.99

This book shows you how to run experiments on your website using A/B testing - and then takes you a huge step further by introducing you to bandit algorithms for website optimization. Author John Myle......一起来看看 《Bandit Algorithms for Website Optimization》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

html转js在线工具
html转js在线工具

html转js在线工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具