GLib und GObject sind 2 separate C-Bibliotheken, aus denen die GTK + GUI-Toolkit wird (unter anderem) gebaut.
Da C eine untergeordnete Sprache ist, bietet GLib eine Menge grundlegender Funktionalität, wie die mit Python integrierten Dienstprogramme (Dateieingabe/-ausgabe, Zeichenfolgenmanipulation, Speicherverwaltung, Threading usw.).
Da C keine objektorientierte Sprache ist, stellt GObject ein C-basiertes Objektsystem zur Verfügung, das Eigenschaften und Vererbung enthält (wiederum bereits in Python integriert). In Python verwenden Sie GLib nur selten direkt (weil Python die meisten Funktionen eingebaut hat), aber GObject ist abhängig von GLib.
Alle GObject-basierten Bibliotheken unterstützen Sprachbindungen zu anderen Sprachen wie Python.
Auf den Punkt Ihrer Frage stellt GObject ein Ereignissystem zur Verfügung, das als "Signale" bekannt ist. Jedes von GObject abgeleitete Objekt kann Signale "aussenden", um Benachrichtigungen über ein auftretendes Ereignis zu senden. Die Klasse MPDProtocolClient
in python-mpdor
ist von GObject abgeleitet und kann daher Signale aussenden. Anwendungen "verbinden" Funktionen mit diesen Signalen. F
Zum Beispiel zeigen die README dieses Beispiel:
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()
In diesem Fall wird die Funktion mit dem Namen notify
„verbunden“ ist zu dem "mixer-change"
Signal, das diese Funktion bedeutet, dass jederzeit die Client „aussendet aufgerufen werden "Dieses Signal. Der Aufruf gobject.MainLoop().run()
ruft eine "main event loop" (im Grunde eine Endlosschleife) auf, die ein Standardkonzept in der ereignisgesteuerten Programmierung ist.
Sie werden wahrscheinlich nicht viele GObject/Python Tutorials finden, wenn Sie jedoch ein wenig Python/GTK + Grundlagen lernen, dann werden Sie wahrscheinlich die Konzepte der Event Loop, Signale und Rückrufe signalisieren. (Es sieht so aus, als ob python-mpdor GTK + 2 verwendet, was PyGTK im Gegensatz zu neueren GTK + 3 ist, was PyGObject ist).
Viel Glück.
+1 Sehr schöne Erklärung. – RanRag