gpt4 book ai didi

glib - GLib 和 GObject 到底是什么?

转载 作者:行者123 更新时间:2023-12-03 10:13:14 28 4
gpt4 key购买 nike

我一直在研究 python-mpdor 的源代码它提到它是

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



谁能简单地向我解释一下 Glib 到底是什么?和 GObject以及它们如何相互交互以及它在事件处理中扮演什么角色。

我尝试搜索 GlibGObject但我没有找到任何基本的解释。我发现的所有解释都是非常技术性的,技术性我的意思是不适合初学者。

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

最佳答案

GLib 和 GOBject 是构建 GTK+ GUI 工具包的 2 个独立的 C 库(除其他外)。

由于 C 是一种低级语言,GLib 提供了许多基本功能,例如类似于 Python 内置的那些实用程序(文件输入/输出、字符串操作、内存管理、线程等)。

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

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

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

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

您可能找不到很多 GObject/Python 教程,但是,如果您学习一点 Python/GTK+ 基础知识,那么您可能会掌握事件循环、信号和信号回调的概念。 (看起来 python-mpdor 使用的是 GTK+ 2,它是 PyGTK,而不是较新的 GTK+ 3,它是 PyGObject)。

祝你好运。

关于glib - GLib 和 GObject 到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11301074/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com