UI 設計新體驗 Python-etk

jollen 發表於 September 4, 2008 11:00 PM

最近在整理一些有關使用者介面設計的資料,希望可以提份一份簡單有趣的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的架構如下。

efl.png

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程式,及其執行結果。

讀者留言 (1)

  • tiro 於 September 7, 2008 21:31:

    期待您关于UI的讲解。

留言功能維護中。將於近日重新開放。

連絡作者

Jollen Chen,Moko365(仕橙3G教室)講師,熱愛研究 Linux 與 Android 技術。曾為 Motorola、HTC、Foxconn、LG、OPPO、騰迅、廣達電腦、緯創、仁寶等超過 50 家企業講授課程。目前在 MokoVersity 擔任軟體工程師,撰寫 Node.js 程式,也在幾家科技廠兼任 Android Framework 研發顧問。您可透過電子郵件 <jollen (at) jollen (dot) org> 或這裡與我連絡。