FlexGridSizer是GridSizer的一个更灵活的版本。它与标准的GridSizer几乎相同,除了下面3点例外:

1、每行和每列可以有各自的尺寸。
2、默认情况下,当尺寸调整时,它行和列整体改变尺寸。所以,如果需要的话,你可以指定哪行或哪列应该增长。
3、它可以在两个方向灵活地增长,意思是你可以为个别的子元素指定比列量,并且你可以指定固定方向增长上的行为。

1. 构造函数:

wx.FlexGridSizer(int rows=1, int cols=0, int vgap=0, int hgap=0)

参数:

rows 定义GridSizer 行数

cols  定义GridSizer 列数

vgap 定义垂直方向上行间距

hgap 定义水平方向上列间距

2. FlexGridSizer的常用函数

AddGrowableCol(idx, proportion=0)  设定索引为idx的列为可增长列
AddGrowableRow(idx, proportion=0) 设定索引为idx的行为可增长行

参数:

proportion=0 为默认,表示所有的可增长行或列 按照同比列缩放。如果要指定不一样的缩放比例,那么需要手动设置proportion 值。

例如,如果你有两个尺寸可调整的行,并且它们的proportion分别是2和1,那么这第一个行将得到新空间的2/3,第二行将得到 1/3。

# -*- coding: utf-8 -*-
#-------------------------------------------------------------------------------
# Name: ??1
# Purpose:
#
# Author: ankier
#
# Created: 09/10/2012
# Copyright: (c) ankier 2012
# Licence: <your licence>
#-------------------------------------------------------------------------------
import wx
class Example(wx.Frame):
def __init__(self, parent, title):
super(Example, self).__init__(parent, title=title, size=(600, 250))
self.InitUI()
self.Centre()
self.Show() def InitUI(self):
panel = wx.Panel(self)
hbox = wx.BoxSizer(wx.HORIZONTAL)
#设置为2行4列
fgs = wx.FlexGridSizer(2, 4, 9, 20)
title = wx.StaticText(panel, label="Title")
author = wx.StaticText(panel, label="Author", style= wx.ALIGN_RIGHT)
review = wx.StaticText(panel, label="Review", style= wx.ALIGN_RIGHT)
tc1 = wx.TextCtrl(panel)
tc2 = wx.TextCtrl(panel)
tc3 = wx.TextCtrl(panel, style=wx.TE_MULTILINE) #AddMany可以同时添加几个列表,每个列表的参数与Add方法相同
#Add方法定义:Add(self, item, int proportion=0, int flag=0, int border=0,PyObject userData=None)
fgs.AddMany([(title, 0, wx.ALIGN_RIGHT), (tc1, 0, wx.SHAPED), (author, 0, wx.ALIGN_RIGHT), \
(tc2, 0, wx.SHAPED), (review, 0, wx.ALIGN_RIGHT), (tc3, 0, wx.EXPAND)])
# fgs.AddMany([title,tc1,author,tc2,review,tc3])
#设置索引列1,3为自动增长列
fgs.AddGrowableCol(1, 1)
fgs.AddGrowableCol(3, 1)
hbox.Add(fgs, proportion=1, flag=wx.ALL|wx.EXPAND, border=15)
panel.SetSizer(hbox) if __name__ == '__main__':
app = wx.App()
Example(None, title='Review')
app.MainLoop()

  

  

  

运行结果:

  

Python中wx.FlexGridSizer的更多相关文章

  1. (四)Python中的“四大才子”(字符串、列表、字典、集合)

    前戏:在python中把数据序列分为可变(mutable)和不可变(immutable)两种 不可变:string.int.float.tuple 特点:相同对象只是占用一个内存地址,不管有多少个变量 ...

  2. Python 中常见错误总结

    IndentationError: unexpected indent Python 中强制缩进,, IndentationError: unexpected indent 缩进错误 这类错误非常常见 ...

  3. 转载:【学习之家】Python中__init__.py文件的作用

    Python中__init__.py文件的作用详解 Python中__init__.py文件的作用详解 来源:学习之家 作者:xuexi110 人气:357 发布时间:2016-09-29 摘要:__ ...

  4. Python中open函数怎么操作文件--9

    转:https://www.tuicool.com/wx/vYjaYnV 在 Python 中,如果想要操作文件,首先需要创建或者打开指定的文件,并创建一个文件对象,而这些工作可以通过内置的 open ...

  5. [转]Python中的str与unicode处理方法

    早上被python的编码搞得抓耳挠腮,在搜资料的时候感觉这篇博文很不错,所以收藏在此. python2.x中处理中文,是一件头疼的事情.网上写这方面的文章,测次不齐,而且都会有点错误,所以在这里打算自 ...

  6. python中的Ellipsis

    ...在python中居然是个常量 print(...) # Ellipsis 看别人怎么装逼 https://www.keakon.net/2014/12/05/Python%E8%A3%85%E9 ...

  7. python中的默认参数

    https://eastlakeside.gitbooks.io/interpy-zh/content/Mutation/ 看下面的代码 def add_to(num, target=[]): tar ...

  8. Python中的类、对象、继承

    类 Python中,类的命名使用帕斯卡命名方式,即首字母大写. Python中定义类的方式如下: class 类名([父类名[,父类名[,...]]]): pass 省略父类名表示该类直接继承自obj ...

  9. python中的TypeError错误解决办法

    新手在学习python时候,会遇到很多的坑,下面来具体说说其中一个. 在使用python编写面向对象的程序时,新手可能遇到TypeError: this constructor takes no ar ...

随机推荐

  1. HTML转义字符串

    HTML字符实体(Character Entities),转义字符串(Escape Sequence) 为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,> ...

  2. linux模拟实现主机跨路由通信

    p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; f ...

  3. 标题:a++和++a的区别

    以前我也是老搞不懂a++和++a的区别, 后来看了很多资料, 终于总结出来一条规律, 小白专用! 看完这个例子就懂了: 例1:$a = 8, 求 ++a + a++ - --a + a-- + ++a ...

  4. IPsec_VPN实现技术【转载】

    GRE Tunnel GRE Tunnel(General Routing Encapsulation 通用路由封装)是一种非常简单的VPN(Virtual Private Network 虚拟专用网 ...

  5. Linux下安装oracle jdk

    从官网下载对应的 .tar.gz压缩文件. 在linux某个目录下解压 到根目录下的etc文件夹下编辑profile文件,在文件的末尾加上 JAVA_HOME=/usr/local/jdk1.8.0_ ...

  6. 201521123079《java程序设计》第6周学习总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...

  7. 201521123034《java程序设计》第2周学习总结

    1. 本章学习总结 - String对象创建之后不能再进行修改,修改字符串使用Stringbuilder: - 检测字符串内容是否相同不用==,用equals的方法检测: - 使用一维数组的两个步骤: ...

  8. 201521123002 《Java程序设计》第1周学习总结

    1. 本章学习总结 学习使用Markdown编写文章 jdk的安装和环境变量的设置 java的历史,目前java有三大平台,javaSE,javaEE及javaME.其中javaSE我们会经常用到,由 ...

  9. Core Java 简单谈谈HashSet

    同学们在看这个问题的时候,我先提出者两个问题,然后大家带着问题看这个文章会理解的更好. HashSet为什么添加元素时不能添加重复元素? HashSet是否添加null元素? 打开源码, 我们看到如下 ...

  10. SQL数据库基础知识-巩固篇<一>

    SQL数据库基础知识-巩固篇<一>... =============== 首先展示两款我个人很喜欢的数据库-专用于平时个人SQL技术的练习<特点:体积小,好安装和好卸载,功能完全够用 ...