lgob的gtk+調用和原始的c版本很類似,這也是我選擇lgob的原因.下面我來簡述一下lgob,下面是
摘自oschia上的介紹:
" lgob是以GObject為基礎一些類庫的Lua語言綁定,如GTK+,WebKitGtk,GStreamer,Pango,C
airo等.lgob是小巧而且開銷很小的(源碼包目前只有170多K),支持各種版本的類庫和特性,還有一個
可以用在其他項目/綁定中的代碼生成器."
GObject是一種用C語言實現面向對象的框架,GObject僅依賴於GLib和libc;GLib是C語言上的算法
庫,相當於c++中的stl,它提供了多種高級的數據結構,如內存塊、雙向和單向鏈表、哈希表、動態字符
串等;libc則是linux上的C標准庫.由於lua的自身的庫很小,很多功能都沒有,不過因lua提供了很方便的
CAPI,可以使用C調用輕松lua,反之也是.
下面我通過一個小例子全面的說明.
運行截圖
說明,我原來實在ubuntu上使用截的圖,顯示正常,可是ubuntu不知道怎么回事,突然上不了網,
便用liboffice保存為doc,可是到window下居然沒圖片,只好重新在windows下安裝了lgob,可是
顯示居然亂碼了,看來想實現國際化要用語言文件才行!
1 --引入lgob庫 2 require('lgob.gtk') 3 --創建窗口 4 window = gtk.Window.new() 5 --窗口屬性設置 6 window:set('title', "lgob測試", 'window-position', gtk.WIN_POS_CENTER) 7 window:set_size_request(400, 300) --寬,高 8 --退出事件 9 window:connect('delete-event', gtk.main_quit) 10 11 --事件處理函數 12 function sayHello(data) 13 print(data .. entry:get_text().."!") 14 end 15 16 --部件布局管理器的一種,固定布局 17 fix = gtk.Fixed.new() 18 19 --單行文本框 20 entry=gtk.Entry.new() 21 --標簽 22 name=gtk.Label.new("請輸入你的名字") 23 --按鈕 24 button=gtk.Button.new_with_label("問候") 25 --調用信號處理函數 26 button:connect("clicked",sayHello,"你好,") 27 28 29 --把部件添加到布局管理器 30 fix:put(name,100,80) 31 fix:put(entry,100,120) 32 fix:put(button,100,160) 33 34 --向窗口添加布局管理器 35 window:add(fix) 36 37 --顯示所有部件 38 window:show_all() 39 40 --進入gtk主循環,交給gtk處理 41 gtk.main()
這個例子涉及了gtk里的信號和布局,應該比較全面的展示了gtk的特征.下一篇博客我將
分析如何使用lgob.