pygtk筆記--2.1:佈局容器,VBox、Hbox、Alignment

咱們使用一些軟件的時候發現,軟件上的按鈕,圖標,輸入框等部件,擺放的層次分明。就算是咱們改變軟件窗體的大小,那些部件依然能適應咱們的調整,以最優美的形式展示出來。這裏就用到了佈局管理 python

佈局管理就是替你管理組件顯示樣式、位置等內容的 佈局

這裏先介紹兩個組件:  ui

label=gtk.Label('這個組件負責顯示文字') 
button=gtk.Label('這個組件負責顯示一個按鈕') code

VBox,HBox,Alignment: utf-8

VBox -- 縱向盒子佈局
HBox -- 橫向盒子佈局
Alignment --  控制子部件的顯示位置、大小(只能有一個子部件) it

下面展現一個使用了以上幾個部件作出來的簡單效果: io

 

分解: class

 

  • 綠色部分是一個VBox
  • 每個紅色部分是一個HBox
  • 黃色部分是一個Aligenment

代碼們: 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最大顯示
相關文章
相關標籤/搜索