zoukankan      html  css  js  c++  java
  • wx.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=(250, 200))  
    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=(70, 30))  
    3. hbox5.Add(btn1, 0)  
    4. btn2 = wx.Button(panel, -1, 'Close', size=(70, 30))  
    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((-1, 25))  

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

  • 相关阅读:
    反汇编角度->C++ const
    反汇编->C++虚函数深度分析
    反汇编->C++内联
    反汇编->C++引用与指针
    数据库初步认识
    数据库系统的结构抽象与演变
    Android · PendingIntent学习
    Android · ContentProvider学习
    notepad++
    MapReduce使用JobControl管理实例
  • 原文地址:https://www.cnblogs.com/wolun666/p/9760804.html
Copyright © 2011-2022 走看看