2012-07-02 15 views
18

私はpython-mpdorのソースコードに探していると、(高レベルのクライアント クラスに)扱う簡単なイベントのために、GlibとGobjectは正確に何ですか?

のGObjectベースであることを言及しています。

simpler termsでは、GlibとGObjectが正確に何であるか、お互いにどのようにやり取りするのか、イベント処理でどのような役割を果たすのかを説明することができます。

私はGlib and GObjectについて調べてみましたが、基本的な説明はありませんでした。私が見つけたすべての説明は技術的には非常に技術的なものなので、初心者には適していません。

また、誰かがGlibとGObjectについてのbeginnerチュートリアル/記事を指し示すことができます。

答えて

30

のGLibとのGObjectから2つの別々のCライブラリでありますGTK + GUIツールキットが構築されています(とりわけ)。

Cは低レベル言語なので、GLibはPythonに組み込まれているもの(ファイル入出力、文字列操作、メモリ管理、スレッディングなど)に似たユーティリティのような多くの基本機能を提供します。

Cはオブジェクト指向言語ではないので、GObjectはプロパティと継承を含むCベースのオブジェクトシステムを提供しています(既にPythonに組み込まれています)。 Pythonでは、(Pythonにはその機能の大部分が組み込まれているので)GLibを直接使うことはめったにありませんが、GObjectはGLibに依存しています。

すべてのGObjectベースのライブラリは、Pythonなどの他の言語への言語バインディングをサポートするように設計されています。

GObjectは、「シグナル」と呼ばれるイベントシステムを提供しています。 GObjectから派生したオブジェクトは、発生したイベントの通知を送信するためのシグナルを「送出」できます。 python-mpdorMPDProtocolClientクラスは、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()コールは、イベントドリブンプログラミングの標準概念である「main event loop」(基本的には無限ループ)を入力します。

多くのGObject/Pythonチュートリアルはありませんが、Python/GTK +の基本を少し習得すれば、イベントループ、シグナル、およびコンセプトの概念を把握できるでしょうシグナルコールバック。 (python-mpdorはPyGObjectの新しいGTK + 3とは対照的にPyGTKとなるGTK + 2を使用しているようです。

幸運。

+0

+1とてもいい説明。 – RanRag

-5

のGLibおよびGObjectの両方のGnome/GTK + Pythonバインディングの一部である:

+0

しかし、私が知りたいのは、彼らが実際に何であり、なぜ必要なのかということです。 – RanRag

+0

私はちょうどあなたに言った:) PS:あなたは私をマークした男じゃない? – paulsm4

+0

いいえ、私はその男ではありません。 – RanRag

関連する問題