wxPython的Core組件--BoxSizer

轉載自:http://wwty.iteye.com/blog/385519

wx.BoxSizer:

Python代碼  
  1. box = wx.BoxSizer(integer orient)  

The orientation can be wx.VERTICAL or wx.HORIZONTAL

 

Python代碼  
  1. box.Add(wx.Window window, integer proportion=0, integer flag = 0, integer border = 0)  

參數解讀:

1、proportion:

proportion參數定義了構件在既定方向上所佔空間的比例,是相對的,相對於其他組件
舉個例子:我們有三個按鈕,proportion的值分別是0,1,2。三個按鈕被放置到水平方向的sizer當中,Button with proportion 0 will not change at all。但是, Button with proportion 2將會比the one with proportion 1大兩倍在水平位置上。

Python代碼  
  1. import wx  
  2.   
  3. class Border(wx.Frame):  
  4.     def __init__(self, parent, id, title):  
  5.         wx.Frame.__init__(self, parent, id, title, size=(250200))  
  6.   
  7.         panel = wx.Panel(self, -1,size=(250,200))  
  8.         panel.SetBackgroundColour('white')  
  9.         boxsizer1 = wx.BoxSizer(wx.VERTICAL)  
  10.           
  11.         btn1 = wx.Button(panel, -1'Botton1')     
  12.           
  13.         btn2 = wx.Button(panel, -1'Botton2')     
  14.           
  15.         btn3 = wx.Button(panel, -1'Botton3')  
  16.           
  17.         boxsizer1.Add(btn1, proportion=0, flag=wx.EXPAND, border=0)  
  18.         boxsizer1.Add(btn2, proportion=1, flag=wx.ALL, border=0)  
  19.         boxsizer1.Add(btn3, proportion=2, flag=wx.ALL, border=0)  
  20.           
  21.         self.SetSizer(boxsizer1)  
  22.           
  23.         self.Centre()  
  24.         self.Show(True)  
  25.   
  26. app = wx.App()  
  27. Border(None, -1'')  
  28. app.MainLoop()  

 

 通過這個例子可以觀察出proportion參數的作用

2、flag:

flag參數可以使用 '|'來產生組合的多個flags。

flag參數定義了兩個主要的行爲:

第一個參數是窗口的邊框:這個參數決定了邊框的寬度,在此決定窗口某一側添加邊框的事件。

另一個參數決定了sizer事件的行爲,當sizer改變時,空間的分配。並且分配的多少依賴於特定種類的sizer被使用。

3、border:設置邊界寬度
Determines the border width, if the flag parameter is set to include any border flag

 

最後特別說明:

flag和border參數兩者結合起來使用的。
vbox.Add(midPan, 1, wx.EXPAND | wx.ALL, 20)
flag=wx.EXPAND | wx.ALL,border=20---------這代表的是midPan這個組件將充分的利用空間,但是會從四周預留出來20px作爲border。所以如果說使用了wx.EXPAND flag,而沒有設定border,那麼我們的組件將充分的利用分配的空間。

最後,我們也能去定義調整我們的組件。但是這種調整是指在sizer分配給當前構件的空間之內的一種調整。

We do it with the following flags :
wx.ALIGN_LEFT
wx.ALIGN_RIGHT
wx.ALIGN_TOP
wx.ALIGN_BOTTOM
wx.ALIGN_CENTER_VERTICAL
wx.ALIGN_CENTER_HORIZONTAL
wx.ALIGN_CENTER

看下面一個例子:

Python代碼  
  1. hbox5 = wx.BoxSizer(wx.HORIZONTAL)  
  2. btn1 = wx.Button(panel, -1'Ok', size=(7030))  
  3. hbox5.Add(btn1, 0)  
  4. btn2 = wx.Button(panel, -1'Close', size=(7030))  
  5. hbox5.Add(btn2, 0, wx.LEFT | wx.BOTTOM , 5)  
  6. vbox.Add(hbox5, 0, wx.ALIGN_RIGHT | wx.RIGHT, 10)  

 這個例子將已有的hbox5放置到vbox當總,而wx.ALIGN_RIGHT所起到的作用就是在hbox5這個sizer當中的橫向往右放置的調整

下面是常用的flag參數:

1、These flags are used to specify which side(s) of the sizer item that the border width will apply to.

wx.TOP wx.BOTTOM wx.LEFT wx.RIGHT wx.ALL

2、The item will be expanded to fill the space allotted to the item.

wx.EXPAND

還有兩個沒有列出來,如果用到的話,可以查幫助文檔

最後,有些情況下我們需要添加一些空白的區域到我們的應用當中,可以使用下面的代碼:

Python代碼  
  1. vbox = wx.BoxSizer(wx.VERTICAL)  
  2. vbox.Add((-125))  

vbox.Add((-1, 25))---添加了25個像素的空白空間 

發佈了58 篇原創文章 · 獲贊 24 · 訪問量 49萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章