text = ("This is text box")
        panel = wx.Panel(self, -1)
        chkAll1 = wx.CheckBox(panel, ID_CHKBOX_CAN_SEL_ALL, u'全选')       
        chkKnown = wx.CheckBox(panel, ID_CHKBOX_CAN_UNKNOWN, u'不会')
        chkUnknow = wx.CheckBox(panel, ID_CHKBOX_CAN_KNOWN, u'会')

        chkAll2 = wx.CheckBox(panel, ID_CHKBOX_SEGMENT_SEL_ALL, u'全选')
        chkChuzhong = wx.CheckBox(panel, ID_CHKBOX_SEGMENT_SEL_CHUZHONG, u'初中')
        chkCollegue = wx.CheckBox(panel, ID_CHKBOX_SEGMENT_SEL_DAXUE, u'大学')
        chkCollegueCet6 = wx.CheckBox(panel, ID_CHKBOX_SEGMENT_SEL_DAXUE_CET6, u'大学六级')

        #lst = wx.ListCtrl(panel, ID_LIST_RECITE, style=wx.LC_REPORT|wx.LC_VIRTUAL|wx.LC_HRULES|wx.LC_VRULES)
        self.lst = ReciteListCtrl(panel, ID_LIST_RECITE)

        sz1 = wx.GridSizer(rows=2, cols=4, vgap=5, hgap=20)
        sz1.Add(chkAll1)
        sz1.Add(chkKnown)
        sz1.Add(chkUnknow)
        sz1.Add(wx.TextCtrl(panel))

        sz1.Add(chkAll2)
        sz1.Add(chkChuzhong)
        sz1.Add(chkCollegue)
        sz1.Add(chkCollegueCet6)

        sz0 = wx.BoxSizer(wx.VERTICAL)
        sz0.Add(sz1)
        sz0.Add(self.lst, 1, wx.EXPAND)
        panel.SetSizer(sz0)

 

 

 

wxpython布局管理部件wx.gridbagsizer用法示例

转自:http://www.jbxue.com/python/29629.htm

 

wxpython中布局管理wx.gridbagsizer部件的用法,wx.gridbagsizer实现对部件的显式定位,部件项目还可以跨越行或列,一起学习下。

 

wxPython 中最复杂的 sizer.
它带来了对部件的显式定位. 部件项目还可以跨越行或列.  专题教程:wxpython中文教程

wx.GridBagSizer 的构造器是十分简单的。
wx.GridBagSizer (integer vgap, integer hgap)
垂直和水平空白 (gap) 定义了子部件之间的空白距离. 通过 Add() 方法向网格里添加部件项目.
Add(self, item, tuple pos, tuple span=wx.DefaultSpan, integer flag=0,
    integer border=0, userData=None)
“item” 指你要插入到网格中的部件. “pos” 指定虚拟网格的位置. 左上单元格的 “pos” 值为(0, 0).“span” 是一个对应部件的跨度值. 比如(3, 2)指一个部件要跨越 3 行 2 列. “flag” 和 “border” 两个参数在早前的 wx.BoxSizer 中已经讨论了.
网格中的这些部件项目可以随窗口缩放而改变其大小,也可以保持不变.

如果需要部件变大或缩小,可以使用这两个方法.
AddGrowableRow(integer row)
AddGrowableCol(integer col)

例子:

复制代码代码示例:

#!/usr/bin/python
#coding=utf-8

#wxgridbagsizer.py

import wx

class MyFrame(wx.Frame):
    def __init__(self,parent, id, title):
        wx.Frame.__init__(self, parent, id, title, wx.DefaultPosition)
        sizer = wx.GridBagSizer(9, 9)
        sizer.Add(wx.Button(self, -1, "按钮1"), (0, 0), wx.DefaultSpan,
                  wx.ALL, 5)
        sizer.Add(wx.Button(self, -1, "按钮2"), (1, 1), (1, 7), wx.EXPAND)
        sizer.Add(wx.Button(self, -1, "按钮3"), (6, 6), (3, 3), wx.EXPAND)
        sizer.Add(wx.Button(self, -1, "按钮4"), (3, 0), (1, 1),
                  wx.ALIGN_CENTER)
        sizer.Add(wx.Button(self, -1, "按钮5"), (4, 0), (1, 1),
                  wx.ALIGN_LEFT)
        sizer.Add(wx.Button(self, -1, "按钮6"), (5, 0), (1, 1),
                  wx.ALIGN_RIGHT)
        sizer.AddGrowableRow(6)
        sizer.AddGrowableCol(6)
        self.SetSizerAndFit(sizer)
        self.Centre()
class MyApp(wx.App):
    def OnInit(self):
        frame = MyFrame(None, -1, 'wxgridbagsizer.py')
        frame.Show(True)
        return True
app = MyApp(0)
app.MainLoop()

要实现部件跨越多于一个的单元格,必须要提供 wx.EXPAND 标志。
self.SetSizerAndFit(sizer)
这方法跟 SetSizer() 差不多,此外它将把大小通告给窗口,以确保所有按钮都将显示在窗口上。

wxpython布局管理部件wx.gridbagsizer用法示例的更多相关文章

  1. wxpython 布局管理

    一个典型的应用程序是由不同的部件.这些小部件被放进容器部件.一个程序员必须管理应用程序的布局.这不是一项容易的任务.在wxPython我们有两个选择. *absolute positioning*si ...

  2. Java Swing布局管理器GridBagLayout的使用示例 [转]

    GridBagLayout是java里面最重要的布局管理器之一,可以做出很复杂的布局,可以说GridBagLayout是必须要学好的的, GridBagLayout 类是一个灵活的布局管理器,它不要求 ...

  3. 5、Java Swing布局管理器(FlowLayout、BorderLayout、CardLayout、BoxLayout、GirdBagLayout 和 GirdLayout)

    5.Java-Swing常用布局管理器       应用布局管理器都属于相对布局,各组件位置可随界面大小而相应改变,不变的只是其相对位置,布局管理器比较难以控制,一般只在界面大小需要改是才用,但即使这 ...

  4. Java-Swing常用布局管理器

    http://www.cnblogs.com/hthuang/p/3460234.html   5.Java-Swing常用布局管理器       应用布局管理器都属于相对布局,各组件位置可随界面大小 ...

  5. Python图形界面开发—wxPython库的布局管理及页面切换

    前言 wxPython是基于Python的跨平台GUI扩展库,对wxWidgets( C++ 编写)封装实现.GUI程序的开发中界面布局是很重要的一个部分,合理的页面布局能够给予用户良好使用体验.虽然 ...

  6. pyqt布局管理器QGridLayout简单示例

    # _*_ coding:utf-8 _*_ import sys from PyQt4 import QtGui class Example(QtGui.QWidget): def __init__ ...

  7. Tkinter 的三大布局管理器 pack、grid 和 place用法汇总

    学习python的tkinter免不了要对各个组件进行位置的排放与设定,常用的布局管理器有grid,pack和place.这三种均用于同一父组件下的组件布局,但是也是有区别的,先看下他们各自的含义吧. ...

  8. [置顶] Android布局管理器 - 详细解析布局实现

    布局管理器都是以ViewGroup为基类派生出来的; 使用布局管理器可以适配不同手机屏幕的分辨率,尺寸大小; 布局管理器之间的继承关系 : 在上面的UML图中可以看出, 绝对布局 帧布局 网格布局 相 ...

  9. Qt布局管理

    原地址:http://blog.csdn.net/lastsoup/article/details/7028243 设计软件中各个部件的位置排列,有两种方法: 1.设置widget的在父窗体中的坐标和 ...

随机推荐

  1. linux内存

    在Linux的世界中,从大的方面来讲,有两块内存,一块叫做内存空间,Kernel Space,另一块叫做用户空间,即User Space.它们是相互独立的,Kernel对它们的管理方式也完全不同 驱动 ...

  2. 解析车辆VIN码识别(车架号识别)系统

    很多人在购买车辆的时候,只关注性能.外观.内饰等,其实真正的内行是首先看车辆的VIN码,也叫车架号码. VIN码(车架号码)是一辆车的唯一身份证明,一般在车辆的挡风玻璃处,有的在车辆防火墙上,或B柱铭 ...

  3. JavaSE复习(六)函数式接口

    函数式接口 有且仅有一个抽象方法的接口 @FunctionalInterface注解 一旦使用该注解来定义接口,编译器将会强制检查该接口是否确实有且仅有一个抽象方法,否则将会报错.需要注 意的是,即使 ...

  4. 解决Mysql错误Too many connections的方法

    MySQL数据库 Too many connections出现这种错误明显就是 mysql_connect 之后忘记 mysql_close:当大量的connect之后,就会出现Too many co ...

  5. Xshell出现要继续使用此程序必须应用到最新的更新或使用新版本

    资源可以用,但是安装完成后启动会报错:“要继续使用此程序,您必须应用最新的更新或使用新版本” 解决办法先修改你电脑时间为前一年(2017 1月),然后就可以打开xshell了,打开后"工具& ...

  6. pptp协议的工作原理

    我的工作机是A,通信网卡是Aeth0, Appp0: 然后我的云主机是B, 通信的网卡是Beth0, Bppp0: 在网卡Bppp0上会不断地很清晰的数据包: 16:40:39.522917 IP 6 ...

  7. 【SVN】SVN服务器的本地搭建和使用

    Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. 首先来下载和搭建SVN服务器. 现在Subversion已经迁移到apache网站上了,下载地址: http:// ...

  8. doget,doPost在底层走的是service

    doget,doPost在底层走的是service 因为在源码上 先执行service方法 然后再调用doget,doPost方法

  9. [洛谷P1131][ZJOI2007]时态同步

    题目大意:给你一棵树,每条边有边权,要求增加一些边的边权,使得根节点到每个叶子节点的距离相等,求出最少共增加多少边权. 题解:树形$DP$,对于每个点,如果它到它的子树中的叶子节点距离不同,一定要在这 ...

  10. makefile使用笔记(一)入门

    By francis_hao    Mar 2,2017 makefile makefile一个很简单的例子如下,该实例完成在执行make时,将main.c编译成可执行文件main的功能. 各项的含义 ...