wxpython的gui布局问题

整理一下最近学习的关于wxpython的内容。

1.wxpython 基础

import wx
class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self,parent=None,id=-1,size=(800,600))
        self.Show()
        
if __name__=='__main__':
    app=wx.App()
    frame=MyFrame()
    app.MainLoop()

#wxpython程序中必要的两个对象,一个是wx.App()应用程序对象,负责管理整个应用程序事件循环MainLoop;二是顶层的Frame框架,用于控制显示

#http://www.cnblogs.com/roicel/archive/2013/03/05/2944833.html博文中有更为详细的解释


2.组件和布局

import wx
class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self,parent=None,id=-1,size=(800,600))
        #定义所有要用到的组件
        panel=wx.Panel(self)
        filetextctrl=wx.TextCtrl(parent=panel,id=-1)
        btn1=wx.Button(parent=panel,id=-1,label="button1")
        btn2=wx.Button(parent=panel,id=-1,label="button2")
        
        textctrl=wx.TextCtrl(parent=panel,id=-1,style=wx.TE_MULTILINE|wx.HSCROLL)
        #开始布局;我们的布局分成两行,第一行并排的有三个元素;第二行只有一个大的文本编辑框
        boxsizer_v1=wx.BoxSizer(wx.HORIZONTAL)#第一行
        boxsizer_v1.Add(filetextctrl,proportion=1,flag=wx.EXPAND|wx.ALL,border=5)
        boxsizer_v1.Add(btn1,proportion=0,flag=wx.ALL,border=5)
        boxsizer_v1.Add(btn2,proportion=0,flag=wx.ALL,border=5)
        
        boxsizer_h=wx.BoxSizer(wx.VERTICAL)
        boxsizer_h.Add(boxsizer_v1,proportion=0,flag=wx.ALL|wx.EXPAND,border=5)
        #添加第一行,proporsion表示相对本行所在其他元素所占的宽度,如果为0,表示使用默认值,不可拉伸;
        #注意如果一个元素被设置成固定值,那么expand拉伸属性无效,但如果是一行被设置成固定值,其内部的元素设置满足拉伸条件的话,同样可以拉伸的
        #flag中all属性表示border存在的方位,expand表示是否拉伸
        boxsizer_h.Add(textctrl,proportion=1,flag=wx.ALL|wx.EXPAND)#相当于添加第二行,这里因为只有一个元素,所以不用再新建一个行的boxsizer
        
        panel.SetSizer(boxsizer_h)
        self.Show()
        
if __name__=='__main__':
    app=wx.App()
    frame=MyFrame()
    app.MainLoop()

#对于BoxSizer通过vertical和horizontal来定义行和列,支持嵌套使用,因而可以比较方便直观地一行一行添加元素,完成布局

#借鉴博文http://purpen.iteye.com/blog/92130;http://blog.csdn.net/igolang/article/details/9397175


第一次把学习的过程写出来,各种不足和错误还希望大侠指出!


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值