Que sont exactement GLib et GObject?
j'ai cherché dans le code source de python-mpdor et elle mentionne qu'elle est
basé sur gobject, pour faciliter la gestion d'événements (dans le client de haut niveau) classe.)
quelqu'un Peut m'expliquer termes simples quels sont exactement Glib
et GObject
et comment interagissent-ils les uns avec les autres et quel rôle joue-t-il dans le traitement des événements.
j'ai essayé de chercher Glib
et GObject
mais je n'ai pas trouvé aucune explication de base. Toutes les explications que j'ai trouvées sont très techniques et par technique je veux dire pas adapté pour un débutant.
aussi, quelqu'un peut-il pointer vers un débutant tutoriels/articles sur le Glib
et GObject
.
2 réponses
GLib et GOBject sont 2 bibliothèques C distinctes à partir desquelles la boîte à outils GTK+ GUI est construite (entre autres).
puisque C est un langage de niveau inférieur, GLib fournit beaucoup de fonctionnalités de base comme ces utilitaires similaires à ce qui est intégré avec Python (entrée/sortie de fichier, manipulation de chaîne, gestion de mémoire, threading, etc.).
puisque C n'est pas un langage orienté objet, GObject fournit un système d'objet basé sur C qui inclut les propriétés et l'héritage (encore, construit en Python déjà). En Python, vous utilisez rarement GLib directement (parce que Python a la plupart de cette fonctionnalité intégrée) mais GObject dépend de GLib.
toutes les bibliothèques basées sur GObject sont conçues pour prendre en charge les liaisons de langage vers D'autres langues comme Python.
au point de votre question, GObject fournit un système d'événements connu sous le nom de "signaux". Tout objet dérivé de GObject peut "émettre" des signaux pour envoyer des notifications d'un événement se produisant. Le MPDProtocolClient
classe python-mpdor
est dérivé de GObject et peut donc émettre des signaux. Applications "connecter" fonctions à ces signaux. F
Par exemple, le fichier README montre cet exemple:
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()
Dans ce cas, la fonction nommée notify
est "connecté" au "mixer-change"
signal ce qui signifie que cette fonction sera appelée à chaque fois que le client "émet" ce signal. gobject.MainLoop().run()
appel entre dans un "boucle principale" (essentiellement une boucle infinie) qui est un standard concept de la programmation événementielle.
vous ne trouverez probablement pas beaucoup de tutoriels GObject/Python, cependant, si vous apprenez un peu les bases de Python/GTK+, vous aurez probablement une compréhension des concepts de la boucle d'événement, des signaux, et des callbacks de signal. (Il semble que python-mpdor utilise GTK+ 2 qui serait PyGTK par opposition à GTK+ 3 plus récent qui est PyGObject).
Bonne chance.
GLib et GObject font tous deux partie des fixations Gnome/GTK+ Python: