咱们使用一些软件的时候发现,软件上的按钮,图标,输入框等部件,摆放的层次分明。就算是咱们改变软件窗体的大小,那些部件依然能适应咱们的调整,以最优美的形式展示出来。这里就用到了布局管理 python
布局管理就是替你管理组件显示样式、位置等内容的 布局
这里先介绍两个组件: ui
label=gtk.Label('这个组件负责显示文字')
button=gtk.Label('这个组件负责显示一个按钮') code
VBox,HBox,Alignment: utf-8
VBox -- 纵向盒子布局
HBox -- 横向盒子布局
Alignment -- 控制子部件的显示位置、大小(只能有一个子部件) it
下面展现一个使用了以上几个部件作出来的简单效果: io
分解: class
代码们: import
#coding=utf-8 __author__ = '一个胖子' import gtk class 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最大显示