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