wx.BoxSizer


速覽:

步驟創建sizer -> 添加控件 -> 設置sizer

sizer
1 wx.BoxSizer
2 wx.StaticBoxSizer
3 wx.GridSizer
4 wx.FlexGridSizer
5 wx.GridBagSizer

 

 

 

 

 

構造方法:__init__(self,orient=wx.HORIZONTAL)

orient
wx.HORIZONTAL 水平sizer
wx.VERTICAL 垂直sizer

 

 

 

Add方法:Add(self,window,proportion=0,flag=0,border=0)

flag
wx.TOP 具有上邊框
wx.BOTTOM 具有下邊框
wx.LEFT 具有左邊框
wx.RIGHT 具有右邊框
wx.ALL 具有全邊框
wx.EXPAND 擴展到最大
wx.ALIGN_CENTER 居中
wx.ALIGN_LEFT 居左
wx.ALIGN_RIGHT  
wx.ALIGN_TOP  
wx.ALIGN_BOTTOM  
wx.ALIGN_CENTER_VERTICAL 垂直居中
wx.ALIGN_CENTER_HORIZONTAL  

 

 

 

 

 

 

 

 

 

 

提示:先添加的控件排列在左/上

設置sizer時只需設置頂層sizer


 

wx.BoxSizer是wxpython中最基本的一個sizer

它可以在水平/垂直方向上管理控件

sizer可以幫助你布局你的空間

它是wxpython的靈魂之一

wxpython中有五種sizer

1 wx.BoxSizer
2 wx.StaticBoxSizer
3 wx.GridSizer
4 wx.FlexGridSizer
5 wx.GridBagSizer

 

 

 

 

其中wx.BoxSizer是最簡單的也是最靈活的

 

1.wx.BoxSizer最基本的用法

text1 = wx.TextCtrl(panel)          #創建控件
text2 = wx.TextCtrl(panel)          

sizer = wx.BoxSizer(wx.VERTICAL)    #創建sizer

sizer.Add(text1,1,wx.EXPAND)        #在sizer中添加控件
sizer.Add(text2,1,wx.EXPAND)

panel.SetSizer(sizer)               #設置sizer到panel

解釋:

1.因為有sizer自動管理空間的位置大小,所以text就不指定大小位置了

2.BoxSizer默認模式是水平的wx.HORIZONTAL,也可以設置為垂直的wx.VERTICAL

3.使用sizer的Add方法添加控件

4.最后使用panel的SetSizer方法設置sizer

總結:創建sizer -> 添加控件 -> 設置sizer

 

2.sizer.Add方法詳解

是Add的一般用法,詳見文檔

Add (window,proportion=0, flag=0, border=0, userData=None)
   控件 所占比例 標志 邊的寬度 用戶數據

所占比例指的是在所有控件中所占比例,0的話就是保持大小

比如我添加了兩個控件,一個的proportion參數為1,另一個也為1

那么結果就是這樣

他們各自占據sizer這個容器的一半,不管他們的外觀是否填充了整個區域,都是這樣分的

接下來是flag參數

wx.TOP 具有上邊框
wx.BOTTOM 具有下邊框
wx.LEFT 具有左邊框
wx.RIGHT 具有右邊框
wx.ALL 具有全邊框
wx.EXPAND 擴展到最大
wx.ALIGN_CENTER 居中
wx.ALIGN_LEFT 居左
wx.ALIGN_RIGHT  
wx.ALIGN_TOP  
wx.ALIGN_BOTTOM  
wx.ALIGN_CENTER_VERTICAL 垂直居中
wx.ALIGN_CENTER_HORIZONTAL  

 

 

 

 

 

 

 

 

 

border參數只有在具有wx.TOP等參數是才有用

 

3.sizer的嵌套

先來看一張ui布局圖

大致可分為三個區域,分別用紅藍綠進行標識

紅色為sizer1

藍色為sizer2

綠色為sizer3

代碼如下

     '控件'
        self.start_btn = wx.Button(self.panel,wx.ID_OK,label='開始',pos=(0,100))
        self.end_btn = wx.Button(self.panel,wx.ID_CANCEL,label='退出',pos=(0,100))
        self.preview = wx.Panel(self.panel)
        self.preview.SetBackgroundColour('Black')
        self.text = wx.TextCtrl(self.panel,pos=(0,0),style=wx.TE_MULTILINE)
        '尺寸器'
        self.sizer1 = wx.BoxSizer(wx.HORIZONTAL)
        self.sizer2 = wx.BoxSizer(wx.VERTICAL)
        self.sizer3 = wx.BoxSizer(wx.HORIZONTAL)
        self.sizer4 = wx.BoxSizer()
        '添加東西'
        self.sizer1.Add(self.start_btn,0,wx.ALIGN_TOP|wx.TOP,50)
        self.sizer1.Add(self.end_btn,0,wx.ALIGN_TOP|wx.TOP,50)
self.sizer2.Add(self.text,
3,wx.EXPAND) self.sizer2.Add(self.sizer1,1,wx.ALIGN_CENTER_HORIZONTAL)
self.sizer3.Add(self.preview,
2,wx.EXPAND) self.sizer3.Add(self.sizer2,1,wx.EXPAND|wx.LEFT,30)
self.sizer4.Add(self.sizer3,
1,wx.EXPAND|wx.ALL,30) '設置尺寸器' #self.panel.SetSizer(self.sizer1) #self.panel.SetSizer(self.sizer2) #self.panel.SetSizer(self.sizer3) self.panel.SetSizer(self.sizer4)

首先把兩個按鈕添加到sizer1中,

在吧文本框和sizer1添加到sizer2里

最后把預覽框與sizer2一起添加到sizer3里

sizer4的作用是添加統一的邊框

最后注意只設置頂級sizer

不然程序會報錯


免責聲明!

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



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