2012-07-02 8 views
18

He estado buscando en el código fuente de python-mpdor y menciona que es¿Qué es exactamente Glib y Gobject?

-basada gobject, para facilitar el manejo de eventos (en la clase de alto nivel del cliente ).

Por lo tanto, puede que alguien me explique en simpler terms cuáles son exactamente Glib y GObject y cómo interactúan entre sí y cuál es el papel que desempeña en la gestión de eventos.

Traté de buscar aproximadamente Glib and GObject pero no encontré ninguna explicación básica para ello. Todas las explicaciones que encontré son muy técnicas por técnico. Quiero decir que no son adecuadas para un principiante.

Además, alguien puede señalar algunos tutoriales/artículos beginner sobre Glib y GObject.

Respuesta

30

GLib y GObject son 2 bibliotecas de C separada de la que el GTK + GUI toolkit está construido (entre otras cosas).

Como C es un lenguaje de nivel inferior, GLib proporciona una gran cantidad de funcionalidades básicas como las utilidades similares a las incorporadas en Python (entrada/salida de archivos, manipulación de cadenas, gestión de memoria, subprocesos, etc.).

Dado que C no es un lenguaje orientado a objetos, GObject proporciona un sistema de objetos basado en C que incluye propiedades y herencia (una vez más, integrado en Python). En Python, rara vez se usa GLib directamente (porque Python tiene la mayor parte de esa funcionalidad incorporada), pero GObject depende de GLib.

Todas las bibliotecas basadas en GObject están diseñadas para admitir enlaces de lenguaje a otros lenguajes como Python.

Al punto de su pregunta, GObject proporciona un sistema de eventos conocido como "señales". Cualquier objeto derivado de GObject puede "emitir" señales para enviar notificaciones de un evento que ocurra. La clase MPDProtocolClient en python-mpdor se deriva de GObject y, por lo tanto, puede emitir señales. Las aplicaciones "conectan" funciones a estas señales. F

Por ejemplo, el README muestra este ejemplo:

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() 

En este caso, la función llamada notify se "conectados" a la señal "mixer-change" lo que significa que la función será llamado en cualquier momento el cliente "emite "Esa señal. La llamada gobject.MainLoop().run() ingresa a "main event loop" (básicamente un bucle infinito) que es un concepto estándar en la programación basada en eventos.

Probablemente no encontrarás muchos tutoriales de GObject/Python, sin embargo, si aprendes un poco de los principios básicos de Python/GTK +, entonces es probable que entiendas los conceptos del ciclo de eventos, señales y devoluciones de llamada de señal. (Parece que python-mpdor usa GTK + 2, que sería PyGTK en comparación con GTK + 3 más nuevo, que es PyGObject).

Buena suerte.

+0

+1 Muy buena explicación. – RanRag