Python wxPython库Core组件BoxSizer用法示例


Posted in Python onSeptember 03, 2018

本文实例讲述了Python wxPython库Core组件BoxSizer用法。分享给大家供大家参考,具体如下:

wx.BoxSizer:

box = wx.BoxSizer(integer orient)

The orientation can be wx.VERTICAL or wx.HORIZONTAL

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大两倍在水平位置上。

# -*- coding:utf-8 -*-
import wx
class Border(wx.Frame):
  def __init__(self, parent, id, title):
    wx.Frame.__init__(self, parent, id, '3water.com - BoxSizer', size=(350, 200))
    panel = wx.Panel(self, -1,size=(350,200))
    panel.SetBackgroundColour('white')
    boxsizer1 = wx.BoxSizer(wx.VERTICAL)
    btn1 = wx.Button(panel, -1, 'Botton1')
    btn2 = wx.Button(panel, -1, 'Botton2')
    btn3 = wx.Button(panel, -1, 'Botton3')
    boxsizer1.Add(btn1, proportion=0, flag=wx.EXPAND, border=0)
    boxsizer1.Add(btn2, proportion=1, flag=wx.ALL, border=0)
    boxsizer1.Add(btn3, proportion=2, flag=wx.ALL, border=0)
    self.SetSizer(boxsizer1)
    self.Centre()
    self.Show(True)
app = wx.App()
Border(None, -1, '')
app.MainLoop()

运行结果:

Python wxPython库Core组件BoxSizer用法示例

通过这个例子可以观察出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

看下面一个例子:

hbox5 = wx.BoxSizer(wx.HORIZONTAL)
btn1 = wx.Button(panel, -1, 'Ok', size=(70, 30))
hbox5.Add(btn1, 0)
btn2 = wx.Button(panel, -1, 'Close', size=(70, 30))
hbox5.Add(btn2, 0, wx.LEFT | wx.BOTTOM , 5)
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

还有两个没有列出来,如果用到的话,可以查帮助文档

最后,有些情况下我们需要添加一些空白的区域到我们的应用当中,可以使用下面的代码:

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

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
跟老齐学Python之再深点,更懂list
Sep 20 Python
Python的Flask框架中实现分页功能的教程
Apr 20 Python
开源Web应用框架Django图文教程
Mar 09 Python
Python 网页解析HTMLParse的实例详解
Aug 10 Python
python3实现163邮箱SMTP发送邮件
May 22 Python
python删除文件夹下相同文件和无法打开的图片
Jul 16 Python
Python实现微信机器人的方法
Sep 06 Python
python 模拟创建seafile 目录操作示例
Sep 26 Python
利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式
Jan 20 Python
浅谈SciPy中的optimize.minimize实现受限优化问题
Feb 29 Python
Python bisect模块原理及常见实例
Jun 17 Python
Python爬取12306车次信息代码详解
Aug 12 Python
深入浅析Python中list的复制及深拷贝与浅拷贝
Sep 03 #Python
Python wxPython库使用wx.ListBox创建列表框示例
Sep 03 #Python
Python wxPython库消息对话框MessageDialog用法示例
Sep 03 #Python
Python中关键字global和nonlocal的区别详解
Sep 03 #Python
python leetcode 字符串相乘实例详解
Sep 03 #Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
Sep 02 #Python
Python实现多级目录压缩与解压文件的方法
Sep 01 #Python
You might like
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
wordpress自定义标签云与随机获取标签的方法详解
2019/03/22 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
2019/12/31 PHP
javascript 字符 Escape,encodeURI,encodeURIComponent
2009/07/09 Javascript
js对象的比较
2011/02/26 Javascript
jquery Tab效果和动态加载的简单实例
2013/12/11 Javascript
JS采用绝对定位实现回到顶部效果完整实例
2016/06/20 Javascript
jquery easyui validatebox remote的使用详解
2016/11/09 Javascript
微信小程序 动态绑定数据及动态事件处理
2017/03/14 Javascript
angularjs指令之绑定策略(@、=、&)
2017/04/13 Javascript
layui分页效果实现代码
2017/05/19 Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
2018/01/08 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
vue2 前端搜索实现示例
2018/02/26 Javascript
解决vue-cli项目打包出现空白页和路径错误的问题
2018/09/04 Javascript
jQuery.parseJSON()函数详解
2019/02/28 jQuery
vue框架下部署上线后刷新报404问题的解决方案(推荐)
2019/04/03 Javascript
[47:39]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs OPTIC
2018/03/31 DOTA
Fabric 应用案例
2016/08/28 Python
Python制作exe文件简单流程
2019/01/24 Python
利用python在excel里面直接使用sql函数的方法
2019/02/08 Python
python3+selenium自动化测试框架详解
2019/03/17 Python
python使用writerows写csv文件产生多余空行的处理方法
2019/08/01 Python
python用TensorFlow做图像识别的实现
2020/04/21 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
2020/06/12 Python
详解python UDP 编程
2020/08/24 Python
Scrapy中如何向Spider传入参数的方法实现
2020/09/28 Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
2021/01/12 Python
美国体育用品在线:Modell’s Sporting Goods
2018/06/07 全球购物
德国圣伯纳德草药屋:Kräuterhaus Sanct Bernhard(有中文站)
2018/08/05 全球购物
商场中秋节活动方案
2014/02/07 职场文书
组工干部演讲稿
2014/09/02 职场文书
党的群众路线教育实践活动实施方案
2014/10/31 职场文书
学术会议邀请函
2015/01/30 职场文书
目标责任书格式范文
2015/05/11 职场文书
委托书范本格式
2019/04/18 职场文书