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.