wxpython实战,wxpython教程

菜单栏和工具栏,在大多数编程语言中,都会提供对应的布局,而工作区域的,需要用布局组件。当然,在wxPython中,大多数组件可用x、y轴坐标进行定位摆放,只是那样要费时费力,还会遇到调整窗口大小时,组件的尺寸和位置不会随之改变的问题,会遇到不同系统上,应用界面不一致的问题。

为此,wxPython提供了布局管理器Sizer,Sizer本身不是一个容器或一个窗口部件,它是一个屏幕布局的算法。真正实现布局的是wx.Sizer的子类,有按行或列布局的箱子布局wx.BoxSizer和wx.StaticBoxSizer;有按网格布局的wx.GridSizer、wx.FlexGridSizer和wx.GridBagSizer。

6.1 箱子布局

箱子布局wx.BoxSizer,是最常见的布局管理器,可支持横向布局和纵向布局。如果要同时支持横向和纵向布局,嵌套wx.BoxSizer就好。wx.StaticBoxSizer是在BoxSizer周围加上了一个静态文本框的显示。wx.BoxSizer的语法为:

box = wx.BoxSizer(orient=wx.HORIZONTAL)box.Add(window=wx.Window, proportion=0, flag=0, border=0, userData=None)

orient值为wx.HORIZONTAL(默认)时,水平排列,为wx.VERTICAL时,垂直排列;

在布局管理器(如wx.BoxSizer)中,用Add()方法添加组件,它的参数说明如下:

window:继承于wx.Window的组件,如Button、StaticText等;

proportion:排列比例,一个布局中所包含的组件的尺寸由其比例所决定,比例为0表示在窗口尺寸变化时保持尺寸不变,其他比例系数表示组件在该布局管理器中的尺寸占比;可以用wx.EXPAND旗标来使得组件占据管理器分配给它的所有空间;

flag:对齐方式。可以设定wx.LEFT(左端对齐)、wx.RIGHT(右端对齐)、wx.TOP(顶部对齐)、wx.BOTTOM(底部对齐)、中心对齐(wx.ALIGN_CENTRE)等多种对齐方式,不同方向之间可以通过竖线符号|组合;wx.EXPAND|wx.ALL 会随着窗口变大而变化;

border:边界,调整组件的边框的宽度(上下左右),一般和flag参数配合使用。

程序清单:boxSizer.py

import wx# 继承Frameclass BoxSizer(wx.Frame): def __init__(self, *args, **kwargs): super(BoxSizer, self).__init__(*args, **kwargs) # 初始化窗口UI self.init_ui() def init_ui(self): panel = wx.Panel(self, ) v_box = wx.BoxSizer(wx.VERTICAL) # 姓名 h_box1 = wx.BoxSizer(wx.HORIZONTAL) name_label = wx.StaticText(panel, label="姓名:", style=wx.ALIGN_CENTRE_VERTICAL) name_input = wx.TextCtrl(panel, size=(350, -1)) h_box1.Add(name_label, flag=wx.EXPAND | wx.ALL, border=5) h_box1.Add(name_input, flag=wx.EXPAND | wx.ALL, border=1) # 地址 h_box2 = wx.BoxSizer(wx.HORIZONTAL) address_label = wx.StaticText(panel, label="地址:", style=wx.ALIGN_CENTRE_VERTICAL) address_input = wx.TextCtrl(panel, size=(350, -1)) h_box2.Add(address_label, flag=wx.EXPAND | wx.ALL, border=5) h_box2.Add(address_input, flag=wx.EXPAND | wx.ALL, border=1) # 静态布局 sb = wx.StaticBox(panel, label="个人爱好") interest = wx.StaticBoxSizer(sb, wx.VERTICAL) interest.Add(wx.CheckBox(panel, label="读书"), flag=wx.LEFT | wx.RIGHT, border=10) interest.Add(wx.CheckBox(panel, label="画画"), flag=wx.LEFT | wx.RIGHT, border=10) interest.Add(wx.CheckBox(panel, label="游泳"), flag=wx.LEFT | wx.RIGHT, border=10) # 按钮 btn_box = wx.BoxSizer(wx.HORIZONTAL) submit_btn = wx.Button(panel, label="确定", size=(80, 80)) cancel_btn = wx.Button(panel, label="取消", size=(80, 80)) btn_box.Add(submit_btn, flag=wx.ALL | wx.ALIGN_CENTER, border=10) btn_box.Add(cancel_btn, flag=wx.ALL | wx.ALIGN_CENTER, border=10) # 添加布局 v_box.Add(h_box1, proportion=0, flag=wx.ALIGN_LEFT | wx.ALIGN_TOP, border=20) v_box.Add(h_box2, proportion=0, flag=wx.ALIGN_LEFT | wx.ALIGN_TOP, border=20) v_box.Add(interest, proportion=0, flag=wx.ALIGN_LEFT, border=20) v_box.Add(btn_box, flag=wx.ALIGN_CENTER | wx.Center, border=20) panel.SetSizer(v_box) self.SetTitle("BoxSizer布局") self.Centre() self.Show(True)def main(): app = wx.App(False) BoxSizer(None) app.MainLoop()if __name__ == "__main__": main()

运行程序之后,弹出的窗口如下:

第6天 | 25天学会wxPython,箱子布局

布局比较直观,在垂直的wx.BoxSizer(wx.VERTICAL)布局里,添加两个水平的BoxSizer和一个垂直的StaticBoxSizer。布局里的flag指定组件的位置,border调整边距。flag=wx.ALIGN_CENTER | wx.Center表示居中对齐。至于组件的应用,将在下一节学习。

一个当了10年技术总监的老家伙,分享多年的编程经验。想学编程的朋友,关注我,你就赚到了。我正在分享Python、前端、Java和App方面的干货了。赶紧来围观啊!!!

#python##程序员##好平台好讲师##热搜##头条#

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:dandanxi6@qq.com

(0)
上一篇 2022年 12月 24日 上午11:12
下一篇 2022年 12月 24日 上午11:19

相关推荐

  • google邮箱密码怎么修改

    【Google】谷歌邮箱密码更改 因为现在谷歌账号不能自己注册,所以我们获得的谷歌账号,为了账户安全,首先需要把谷歌账户密码更改掉。下面是谷歌邮箱密码更改步骤。我这里的界面以英文为…

    2023年 6月 25日
  • 关闭qq宠物的简单方法(怎么永久关闭qq宠物)

    【科技讯】2月1日消息,很多时候我们因为一时新鲜玩一个东西,但是随后不想玩了,比如QQ宠物,然而烦人的是QQ宠物是默认伴随QQ启动而开启的,那么我们该怎么关掉它呢? QQ宠物怎么删…

    2023年 8月 5日
  • 智能语音识字手表

    今天是“六一”国际儿童节,相信许多家长送给孩子的礼物清单中,都有不少智能科技好物。 如今,智能手表、词典笔、陪伴型机器人等智能装备层出不穷,它们有的能够为家长分忧,有的能够为孩子的…

    2023年 6月 16日
  • 关键词快速排名方法

    关键词快速排名的方法,是指通过一些技巧和策略,帮助网站在搜索引擎上的关键词排名迅速提升的方法。 在如今竞争激烈的网络环境下,能够快速提升关键词排名对于网站的流量和曝光度来说至关重要…

    2023年 11月 4日
  • 12306优化网上购票(12306这个实用功能您不妨了解一下)

    这是全球访问量最大 交易量最大的 在线票务系统—— 铁路12306客户服务系统 铁路12306APP 其功能不断丰富完善 服务不断迭代升级 目前,铁路12306APP已经具备网络购…

    2022年 12月 22日
  • 搭建个人网站博客的方法有哪些(如何搭建一个自己的网站平台)

    今天给大家分享一下关于个人博客方面的知识,什么是博客?博客其实就是日记,以前没有互联网的时候,人们把自己的心事和工作喜欢记录在笔记本里,后来互联网发展起来,互联网提倡分享,人们就把…

    2023年 4月 23日
  • 李宇春歌手最近状况(李宇春歌手进前三)

    昨晚的《歌手》,洪涛圆了一个梦,下错了一步棋:华晨宇&李宇春的《西门少年》。 李宇春唱的是境遇和自述,华晨宇唱的是概念和腔调,两个王自说自话,各自表达,是这首歌最大的矛盾。…

    2023年 7月 26日
  • 怎样才能知道宽带到底是多少兆的呢

    方法一:通过网速速测 1、首先在百度搜索“网速测试”,然后可以找到很多网速测速工具,然后任意点击一个热门测试工具打开,如下图所示。 2、打开网速测试工具后,点击“开始测试”,如下图…

    2023年 5月 17日
  • 海康威视录像机即插即用改手动

    关于即插即用NVR添加摄像机一般有两种方式,下面分别来介绍一下: 即插即用方式添加IPC 只需将IPC连接到NVR的即插即用网口上即可。 注意事项激活版本的IPC对接激活版本的NV…

    2023年 7月 16日
  • 微信红包音效怎么设置方法

    众所周知,自微信问世以来,官方就频频上线一些实用功能,致力让用户有更好的体验感。 其中,仅发红包转账功能就有好几个供用户选择。 比如:微信红包、转账、面对面红包、直接向对方银行卡或…

    2023年 5月 2日