我们使用一些软件的时候发现,软件上的按钮,图标,输入框等部件,摆放的井井有条。就算是我们改变软件窗体的大小,那些部件依然能适应我们的调整,以最优美的形式展现出来。这里就用到了布局管理
布局管理就是替你管理组件显示样式、位置等内容的
这里先介绍两个组件:
label=gtk.Label('这个组件负责显示文字')
button=gtk.Label('这个组件负责显示一个按钮')VBox,HBox,Alignment:
VBox -- 纵向盒子布局
HBox -- 横向盒子布局 Alignment -- 控制子部件的显示位置、大小(只能有一个子部件)下面展示一个使用了以上几个部件做出来的简单效果:
分解:
- 绿色部分是一个VBox
- 每一个红色部分是一个HBox
- 黄色部分是一个Aligenment
代码们:
#coding=utf-8__author__ = '一个胖子'import gtkclass VHA(gtk.Window): def __init__(self): super(VHA,self).__init__() self.set_size_request(500,300) self.set_position(gtk.WIN_POS_CENTER) self.set_title('模拟一个麻将桌的布局') self._init_child() self.connect('destroy',gtk.main_quit) self.show_all() def _init_child(self): vbox=gtk.VBox(False,3) l1=gtk.Label('角') l1.set_size_request(20,20) l2=gtk.Label('角') l2.set_size_request(20,20) l3=gtk.Label('角') l3.set_size_request(20,20) l4=gtk.Label('角') l4.set_size_request(20,20) l5=gtk.Label('这个放在中间') calign=gtk.Alignment(0.3,0,0,0.3) calign.add(l5) b1=gtk.Button('北') b2=gtk.Button('西') b3=gtk.Button('东') b4=gtk.Button('南') hbox1=gtk.HBox(False,3) hbox1.pack_start(l1,False,False) hbox1.pack_start(b1) hbox1.pack_start(l2,False,False) vbox.pack_start(hbox1,False,False) hbox2=gtk.HBox(False,3) hbox2.pack_start(b2,False,False) hbox2.pack_start(calign) hbox2.pack_start(b3,False,False) vbox.pack_start(hbox2) hbox3=gtk.HBox(False,3) hbox3.pack_start(l3,False,False) hbox3.pack_start(b4) hbox3.pack_start(l4,False,False) vbox.pack_start(hbox3,False,False) self.add(vbox)if __name__=='__main__': VHA() gtk.main()
关键点解释:
gtk.HBox(False,3)#两个参数分别是(子组件大小是否平均分派,子部件间距)gtk.VBox(False,3)#参数意思同上vbox.pack_start(hbox1,False,False,0)#参数1:添加的子部件#参数2:子部件占用大小,True:与其他部件平均分配空间,False:最小占用#**参数2的False,必须和类初始化的时候的False一起使用才有效#参数3:没研究#参数4:没研究
alg=Alignment(1,1,0,0)#参数1:水平方向上,左侧空白位置占用比---1表示左侧空白位置占用全部,即组件在最右边显示#参数2:垂直方向上,上方空白位置占用比---1表示上方空白位置占用全部,即组件在最下边显示#参数3:子部件水平方向占用比,0最小显示,1最大显示#参数4:子部件垂直方向占用比,0最小显示,1最大显示