pygtk笔记--2.1:布局容器,VBox、Hbox、Alignment

我们使用一些软件的时候发现,软件上的按钮,图标,输入框等部件,摆放的井井有条。就算是我们改变软件窗体的大小,那些部件依然能适应我们的调整,以最优美的形式展现出来。这里就用到了布局管理

布局管理就是替你管理组件显示样式、位置等内容的

这里先介绍两个组件: 

label=gtk.Label('这个组件负责显示文字') 
button=gtk.Label('这个组件负责显示一个按钮')

VBox,HBox,Alignment:

VBox -- 纵向盒子布局
HBox -- 横向盒子布局
Alignment --  控制子部件的显示位置、大小(只能有一个子部件)

下面展示一个使用了以上几个部件做出来的简单效果:

 

分解:

 

  • 绿色部分是一个VBox
  • 每一个红色部分是一个HBox
  • 黄色部分是一个Aligenment

代码们:

#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最大显示

 

转载于:https://my.oschina.net/u/222523/blog/162938

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值