Python 是用于編碼圖形界面的極佳語言。由于可以迅速地編寫工作代碼并且不需要費時的編譯周期, 所以可以立即使界面啟動和運行起來,并且不久便可使用這些界面。 將這一點與 Python 易于鏈接本機庫的能力結合起來,就可以形成一個出色的環境。
gnome-python 是為 Python 封裝 GNOME 及其相關庫的軟件包。 這使您能夠用 Python 編寫外觀與核心 GNOME 應用程序完全相同的應用程序,而所花的時間只是用 C 編寫該應用程序所花的一部分。
然而,不用 C 進行編程會有一個缺點。大多數 GNOME 都是用 C 編寫的,對于要在 Python 中使用的窗口小部件,必須將它們封裝。 對于知道封裝過程如何工作的人來說,這是一個快速任務,但它不是自動的, 除非窗口小部件屬于核心 GNOME 庫或者至少非常有用,否則將不會對它們進行封裝。C 程序員可能必須編寫更復雜的代碼,但它們確實先做了這一步!
但并不一定是那樣!雖然從傳統上講封裝窗口小部件過程這一技術只有極少數人才知道,但它并不真的那么難。 如果您在發現新的窗口小部件時可以將它們封裝,那么您就可以立刻在 Python 程序中使用它們。
本文將描述如何封裝用 C 編碼的 GObject(所有 GTK+ 窗口小部件和許多相關對象的最終基類), 以便可以從 Python 代碼使用它。假設您的機器上安裝了 gnome-python V1.99.x(如果沒有安裝, 請參閱 參考資料以獲取鏈接)。如果您正在使用軟件包,請確保安裝了該開發軟件包。 另外,還必須安裝 Python 2.2 及其頭文件。 假設您了解 Make、Python、GTK+ 2 和一些 C 方面的知識。
為了演示該過程,我將封裝 EggTrayIcon ,它是用于在通知區中抽象表示圖標的 GTK+ 窗口小部件。 該庫在 GNOME CVS 中,位于 libegg 模塊。在本文的結尾,我們將有一個名為 trayicon 的本機 Python 模塊,它包含一個 TrayIcon 對象。
開始時,獲得 eggtrayicon.c 和 eggtrayicon.h(其鏈接在本文結尾的 參考資料一節中),然后將它們放入新目錄中。 應該在 automake 環境中構建該源文件(但我們將不在這種環境中), 所以或者除去這些文件中的 #include <config.h> ,或者創建一個名為 config.h 的空文件,然后創建一個空的 makefile;接下來,我們將填充它。
創建界面定義
該對象封裝過程的第一步是創建 trayicon.defs,該文件為該對象指定 API。 定義文件是用一種類 Scheme 的語言編寫的,雖然對于小型界面來說它們很容易生成, 但對于大型界面或初學者來說編寫它們會很吃力。
gnome-python 與名為 h2def 的工具一起提供。該工具將解析頭文件并生成粗略的定義文件。 注:因為它實際上并沒有解析 C 代碼,而只是使用正則表達式, 所以它的確要求傳統格式化的 GObject,并且不能正確解析奇特格式化的 C 代碼。
新聞熱點
疑難解答