lgob布局管理
下面介绍几个常用的容器,包括 Hbox,VBox,Alignment ,Fixed,Table
感觉gtk的容器挺不方便,而且每个容器添加子部件的函数名称都不同,不好记.
效果图
alignment 解释图一
table解释图二
上代码:
1 require("lgob.gtk") 2 require('lgob.gdk') 3 4 window = gtk.Window.new() 5 window:set('title', "lgob布局", 'window-position', gtk.WIN_POS_CENTER) 6 window:set_size_request(280, 100) 7 window:connect('delete-event', gtk.main_quit) 8 9 --下面介绍几个常用的容器 10 11 --水平盒和竖直盒容器 参数分别表示 子部件大小是否一致 子部件间隔 12 hbox=gtk.HBox.new(false,3) 13 vbox1=gtk.VBox.new(false,3) 14 vbox2=gtk.VBox.new(false,3) 15 16 --固定布局容器 17 fix = gtk.Fixed.new() 18 --对齐容器,devhelp给出 A widget which controls the alignment and size of its child 19 --我感觉就是控制子部件之间的相对大小,如图1 20 alignment=gtk.Alignment.new(1,0,0,0) --修改数值查看效果 21 22 --表格容器 参数分别表示 行数,列数,子部件大小是否相同 23 table=gtk.Table.new(3,3,true) 24 25 --现在把HBox作为外层容器,其它容器放在VBox里 26 window:add(hbox) 27 28 --向h/VBox中添加子部件常用两个函数,pack_start,pack_end 29 -- 竖直盒 水平盒 30 --pack_start 从上往下 从左往右 31 --pack_end 从下往上 从右往左 32 --四个参数分别表示 子部件,是否扩展,是否填充,子部件间隔 33 hbox:pack_start(vbox1,false,false,3) 34 hbox:pack_start(vbox2,false,false,3) 35 36 37 entry=gtk.Entry.new() 38 entry:set_text("在fixed里") 39 fix:put(entry,20,20) 40 --本来想用不同的颜色设置容器背景,这样很容易区别,结果折腾了十多分没出来,看来lgob没实现 41 --fix:modify_bg(gtk.STATE_NORMAL, gdk.Color(6400, 6400, 6440)) 42 vbox1:pack_start(fix,false,false,3) 43 44 bOk=gtk.Button.new_with_label("ok") 45 alignment:add(bOk) 46 vbox1:pack_start(alignment,false,false,3) 47 48 49 b1=gtk.Button.new_with_label("1") 50 --五个参数分别是 子部件,子部件所在格子的左右上下的线坐标,见图2 51 table:attach(b1,0,1,0,1) 52 b2=gtk.Button.new_with_label("2") 53 table:attach(b2,1,2,0,1) 54 b3=gtk.Button.new_with_label("3") 55 table:attach(b3,2,3,0,1) 56 b4=gtk.Button.new_with_label("4") 57 table:attach(b4,0,1,1,2) 58 b5=gtk.Button.new_with_label("5") 59 table:attach(b5,1,2,1,2) 60 b6=gtk.Button.new_with_label("6") 61 table:attach(b6,2,3,1,2) 62 b7=gtk.Button.new_with_label("7") 63 table:attach(b7,0,1,2,3) 64 b8=gtk.Button.new_with_label("8") 65 table:attach(b8,1,2,2,3) 66 b9=gtk.Button.new_with_label("9") 67 table:attach(b9,2,3,2,3) 68 69 vbox2:pack_start(table,false,false,3) 70 71 --显示所有部件 72 window:show_all() 73 74 --进入gtk主循环,交给gtk处理 75 gtk.main()
作者:半山
出处:http://www.cnblogs.com/xdao/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。