wx.BoxSizer布局管理
来源:互联网 发布:峰会策划知乎 编辑:程序博客网 时间:2024/06/04 00:27
创建wx.BoxSizer:
hbox = wx.BoxSizer(integer orient)
orient:(垂直方向)wx.VERTICAL 或(水平方向) wx.HORIZONTALhbox.Add(wx.Window window, integer proportion=0, integer flag = 0, integer border = 0)
window:需要添加到wx.BoxSizer的控件;proportion:定义了控件在既定方向上所占空间的比例,是相对的,相对于其他组件,比如:在水平sizer中有三个按钮,porportion=0,表示保持本身大小;porportion=1,表示在水平方向上占三分之一的空间;porportion=2,表示在水平方向上占三分之二的空间。
flag:
flag参数定义了两个主要的行为:
第一个参数是窗口的边框:这个参数决定了边框的宽度,在此决定窗口某一侧添加边框的事件。
另一个参数决定了sizer事件的行为,当sizer改变时,空间的分配。并且分配的多少依赖于特定种类的sizer被使用。
flag参数可以使用 '|'来产生组合的多个flags。常用的flag参数:
border:调整控件的边框的宽度,此参数一般和flag参数配合使用。
如:hbox.Add(button, porprotion=1, flag=wx.EXPAND | wx.ALL,border= 20)
flag=wx.EXPAND | wx.ALL,border=20---------这代表的是button这个组件将充分的利用空间,但是会从四周预留出来20px作为border。所以如果说使用了wx.EXPAND标志,而没有设定border,那么我们的组件将充分的利用分配的空间。
vbox = wx.BoxSizer(wx.VERTICAL) vbox.Add((-1, 20))vbox.Add((-1, 20)) # 添加了20个像素的空白空间
布局分析:
上图中布局实现方法:
1、整体上控件布局分上下两个布局,也就是我们需要创建一个垂直方向上的BoxSizer(v_box=wx.BoxSizer(wx.VERTICAL));
2、在分析上部分的控件的布局,可以看出:静态文本、输入框、三个按钮在同一水平方向上,由此我们需要创建一个水平方向上的BoxSizer布局管理器(h_box=wx.BoxSizer(wx.HORIZONTAL));
3、然后把h_box布局器放到v_box布局管理器;
4、最后再把wx.TextCtrl控件放入v_box布局管理器。
小技巧:控件一定要按需要布局的顺序放入BoxSizer布局器中。
完整实例:
#!/usr/bin/env python# -*- encoding:utf-8 -*-import wxclass MyApp(wx.App):def OnInit(self):frame = MyFrame(parent=None, id=-1, title='ExampleBoxSizer')frame.Show(True)return Trueclass MyFrame(wx.Frame):def __init__(self, parent, id, title):wx.Frame.__init__(self, parent, id, title, size=(778, 494), style=wx.DEFAULT_FRAME_STYLE | wx.RESIZE_BORDER | wx.MAXIMIZE_BOX)self.panel = wx.Panel(self, -1)h_box_sizer = wx.BoxSizer(wx.HORIZONTAL)self.file_path = wx.TextCtrl(self.panel, -1)self.open_button = wx.Button(self.panel, -1, label=u'打开')self.save_button = wx.Button(self.panel, -1, label= u'保存')h_box_sizer.Add(self.file_path, proportion=1, flag=wx.EXPAND | wx.ALL, border=5)h_box_sizer.Add(self.open_button, proportion=0, flag= wx.ALL, border=5)h_box_sizer.Add(self.save_button, proportion=0, flag= wx.ALL, border=5)self.edit_text = wx.TextCtrl(self.panel, style=wx.TE_MULTILINE|wx.TE_RICH2|wx.HSCROLL)v_box_sizer = wx.BoxSizer(wx.VERTICAL)v_box_sizer.Add(h_box_sizer, proportion=0, flag=wx.EXPAND)v_box_sizer.Add(self.edit_text, proportion=1, flag=wx.EXPAND, border=5)self.panel.SetSizer(v_box_sizer)def main(): app = MyApp() app.MainLoop()if __name__ == '__main__':main()
- wx.BoxSizer布局管理
- wx佈局管理boxsizer
- wx佈局管理
- wxPython BoxSizer
- \wx
- wx
- wx
- wx
- wx
- wx
- 微信小程序—wx.getRecorderManager(录音管理)
- wxPython的Core组件--BoxSizer
- 布局管理
- 布局管理
- 布局管理
- 使用布局管理器管理布局
- python使用wx绘界面,布局自已的toolbar,使控件右对齐
- Java布局管理
- ios 调用系统发短信以及打电话功能
- CF330 C. Purification 认真想后就成水题了
- 国内HTML5前端开发框架汇总
- 【教你在一个地方放2个同名文件夹】
- 注解
- wx.BoxSizer布局管理
- java socket 多线程网络传输多个文件
- 【Kissy Waterfall】静态调用
- gdb几个命令列表
- Code Fragment-UI加载策略之-可视者优先加载
- 浅谈面向对象编程封装继承多态
- 公钥和私钥的区别
- VSS的配置和使用
- ubuntu 下解决phpmyadmin error: “Connection for controluser as defined in your configuration failed”