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()
posted @ 2012-11-14 22:50  半山th  阅读(598)  评论(2编辑  收藏  举报