什麼是Glib和Gobject?
的原始碼,它提到它是
gobject-based, for easy event handling (in the high-level clientclass).
所以,有人可以用簡單的方式向我解釋什麼是Glib和GObject,它們如何相互互動以及它在事件處理中的作用.
我試著看著Glib和GObject,但是我沒有找到任何基本的解釋.我發現的所有解釋都是非常技術性的技術,我的意思是不適合初學者.
另外,有人可以指出一些關於Glib和GObject的初學者教程/文章.
GLib和Gobject是兩個獨立的C庫,其中構建了GTK GUI工具包(除其他外).
由於C是較低級別的語言,所以GLib提供了很多基本功能,如類似於Python內建的工具(檔案輸入/輸出,字串操作,記憶體管理,執行緒等).
由於C不是面向物件的語言,所以GObject提供了一個基於C的物件系統,它包括屬性和繼承(再次,已經內建到Python中).在Python中,您很少直接使用GLib(因為Python具有內建的大部分功能),而GObject依賴於GLib.
所有基於GObject的庫旨在支援與其他語言(如Python)的語言繫結.
對於您的問題,GObject提供了一個稱為“訊號”的事件系統.從GObject派生的任何物件都可以“發出”訊號來發送事件的通知. python-mpdor中的MPDProtocolClient類派生自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是使用GTK 2,這將是PyGTK,而不是新的GTK 3,這是PyGObject).
祝你好運.
http://stackoverflow.com/questions/11301074/what-exactly-is-glib-and-gobject