GLibとGOBjectは、GTK + GUIツールキットを構築するための2つの別個のCライブラリです(とりわけ)。
Cは低水準言語であるため、GLibは、Pythonに組み込まれているものと同様のユーティリティ(ファイル入出力、文字列操作、メモリ管理、スレッド化など)のような多くの基本機能を提供します。
Cはオブジェクト指向言語ではないため、GObjectはプロパティと継承を含むCベースのオブジェクトシステムを提供します(これもPythonにすでに組み込まれています)。Pythonでは、GLibを直接使用することはめったにありませんが(Pythonにはその機能のほとんどが組み込まれているため)、GObjectはGLibに依存しています。
すべてのGObjectベースのライブラリは、Pythonなどの他の言語への言語バインディングをサポートするように設計されています。
質問のポイントとして、GObjectは「シグナル」と呼ばれるイベントシステムを提供します。GObjectから派生したオブジェクトはすべて、発生したイベントの通知を送信するための信号を「送信」できます。のMPDProtocolClient
クラス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()
呼び出しは、イベント駆動型プログラミングの標準概念である「メインイベントループ」(基本的には無限ループ)に入ります。
GObject / Pythonチュートリアルはあまり見つからないかもしれませんが、Python / GTK +の基本を少し学ぶと、イベントループ、シグナル、シグナルコールバックの概念を理解できるでしょう。(python-mpdorは、PyGObjectである新しいGTK + 3とは対照的に、PyGTKであるGTK + 2を使用しているようです)。
幸運を。