最近在整理一些有關使用者介面設計的資料,希望可以提份一份簡單有趣的UI設計教學投影片,對象是學生,目的是讓同學可以「無恐懼玩UI」。
現今能做UI的技術很多,其中相對比較容易的方式就是以script language來打造UI,而當前最受注意的方式就是以Python快速寫UI。當然,網路上還有許多不同的UI技術,像是能讓「designer」真正自由發揮、免除寫code的SVG browser,也是一個值得注意的技術。
今天要介紹的主角是python-etk,故名思義,這是Python的ETK模組。ETK是一個不錯的東西,全名是Enlightenment Tool Kit,它的功能定位就像是GTK+的角色。GTK+是大名鼎鼎的圖形元件(widget)庫,由GTK+專案所沿伸出來的Glib也是一個使用廣泛的「強化版C程式庫」。ETK有沒有像Glib這樣的東西?有的,叫做Ecore。
Enlightenment(簡稱E)是一個知名且古老的window manager。[Enlightenment]包含許多程式庫以及工具,這些程式庫與工具總稱為EFL(Enlightenment Foundation Libraries)。簡單來看,可以畫出EFL的架構如下。
EVAS是一個「畫布」程式庫。Ecore的角色如同GTK+的產物Glib,不過並不完全等於。EDJE則是一個「layout engine」。最上面的ETK就是我們的主角,Enlightenment的圖形元件庫。
透過python-etk來實作ETK應用程式,可以帶給我們一些愉快的經驗。要怎麼寫一個向世界問好的入門級python-etk程式呢?以下是一個範例(hello_world.py):
#!/usr/bin/python import etk class MyButton(etk.Button): def _size_request(self): return (100, 200) btn = MyButton(label = "Click Me") btn.on_clicked(lambda x: etk.main_quit()) # Main w = etk.Window(title="Hello World", size_request=(150, 150), child=btn) w.show_all() def quit(obj): etk.main_quit() w.on_destroyed(quit) etk.main()
目前有一些知名的Linux手機專案已經開始使用python-etk,例如Openmoko以及Nokia的maemo專案。後續將再配合一個範例來說明hello_world.py程式,及其執行結果。
Jollen's Blog 使用 Github issues 與讀者交流討論。請點擊上方的文章專屬 issue,或 open a new issue
您可透過電子郵件 jollen@jollen.org,或是 Linkedin 與我連絡。更歡迎使用微信,請搜尋 WeChat ID:jollentw