爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
12
返回列表 发新帖
楼主: 15195775117

[混合编程] python之GUI框架之一wxPython

[复制链接]

新浪微博达人勋

 楼主| 发表于 2019-10-7 00:29:03 | 显示全部楼层
布局

wxPython有智能的布局方式---sizer

sizer:
BoxSizer横竖直线上的窗口部件的布局
GridSizer:将相同尺寸的组件网格式地布局
FlexGridSizer:将尺寸不同的组件网格式地布局
GridBagSizer:更灵活地网格式布局
StaticBoxSizer:带有环线和标题

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-10-8 15:49:14 | 显示全部楼层
布局案例

我的思路是,总窗口有左右2个画板,左画板有左右2个文本,右画板有上下2个按钮


py布局.jpg


import wx


app=wx.App()
#新建总窗口:
frame=wx.Frame(None,id=-1,title='总窗口',
            name='总窗口',
            size=(400,300))


#设置一字体款式备用,大小26磅,斜体,加粗,下划线,微软雅黑
font=wx.Font(15,wx.SCRIPT,wx.ITALIC,wx.BOLD,underline=False,faceName='Microsoft YaHei')


#新建2个画板:
panel1=wx.Panel(frame)
panel2=wx.Panel(frame)


#在画板1新建2个静态文本:
text1=wx.StaticText(panel1,id=-1,label='大江东去')
text2=wx.StaticText(panel1,id=-1,label='浪淘尽')


#加载字体设置:
text1.SetFont(font)
text2.SetFont(font)


#在画板2新建按钮1:
button1=wx.Button(panel2,label='确定')
#在画板2新建按钮2:
button2=wx.Button(panel2,label='取消')
#加载字体设置:
button1.SetFont(font)
button2.SetFont(font)


#总窗口的空间横向排列:
hsizer=wx.BoxSizer(wx.HORIZONTAL)
frame.SetSizer(hsizer)
#画板1的空间纵向横向排列:
hsizer2=wx.BoxSizer(wx.HORIZONTAL)
panel1.SetSizer(hsizer2)
#画板2的空间纵向纵向排列:
vsizer=wx.BoxSizer(wx.VERTICAL)
panel2.SetSizer(vsizer)




#将text对象加入容器
#左边距10磅:flag=wx.LEFT,border=10
#右边距10磅:flag=wx.RIGHT,border=10
#底边距10磅:flag=wx.BOTTOM,border=10
#顶边距10磅:flag=wx.TOP,border=10
#四周边距10磅:flag=wx.ALL,border=10


#左对齐:wx.ALIGN_LEFT
#右对齐:wx.ALIGN_RIGHT
#顶对齐:wx.ALIGN_TOP
#底对齐:wx.ALIGN_BOTTOM
#垂直对齐:wx.ALIGN_CENTER_VERTICAL
#水平对齐:wx.ALIGN_CENTER_HORIZONTAL
#居中对齐:wx.ALIGN_CENTER
#控件尽量占空间:wx.EXPAND


#style可以使用竖杠“|”表示“且”:
#右对齐且顶对齐:flag=wx.ALIGN_RIGHT|wx.ALIGN_TOP




#proportion:控件自身的排列方式,会随着窗口缩放而变,有012...等数字可用
#总窗口加入画板1和2,画板1顶对齐,画板2底对齐:
hsizer.Add(panel1,
           proportion=2,
           flag=wx.ALIGN_TOP)
hsizer.Add(panel2,
           proportion=2,
           flag=wx.ALIGN_BOTTOM)


#画板1加入文本
hsizer2.Add(text1,
           proportion=2,
           flag=wx.ALIGN_CENTER)
hsizer2.Add(text2,
           proportion=2,
           flag=wx.ALIGN_CENTER)


#画板2加入按钮,按钮横向居中:
vsizer.Add(button1,
           proportion=2,
           flag=wx.ALIGN_CENTER_HORIZONTAL)
vsizer.Add(button2,
           proportion=2,
           flag=wx.ALIGN_CENTER_HORIZONTAL)




frame.Show()
app.MainLoop()



密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表