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個像素的空白空間 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM