lgob简介

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.

posted @ 2012-11-08 22:15  半山th  阅读(7349)  评论(2编辑  收藏  举报