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

相关推荐

  • 手机积分兑换话费是真的吗(积分兑换话费的骗局)

    东南网12月30日福清站讯(记者 戴亚妹)近日,一条手机积分兑换话费的消息在网上热传,称本月不兑换积分将清零。记者分别致电中国移动客服电话10086和中国电信客服10001进行咨询…

    互联网 2023年 7月 15日
  • 大学生正确的赚钱方法大全(针对大学生的赚钱项目)

    一 收费摄影 大学生兼职摄影,可以拍摄商业活动照片。现在很多电商公司或店铺做活动,都会聘请摄影师。报酬视自身水平而定,只要成品好,薪酬再高也不是问题。摄影兼职一般需要自备器材,前期…

    2023年 10月 26日
  • 书法对联印章怎么盖(愙斋书法行书结构笔法大全)

    中国书法包括篆(甲骨文,大、小篆)、隶(汉碑及秦汉简帛书)、楷、行、草(章草、今草)五种书体,它们都可用来书写对联,进行再创作。 鉴于对联书法的实用性和观赏性往往融为一体,为便于观…

    2023年 10月 21日
  • 怎么在微博上下载秒拍视频

    微博是现在很多人都喜欢玩的一个软件,微博上有趣的视频也是有特别的多,当在微博上看到好看的秒拍视频,想下载下来,那么怎么在微博上下载秒拍视频?带来下载秒拍视频方法介绍! 下载秒拍视频…

    2022年 12月 19日
  • 在抖音设置动态壁纸为什么没有声音

    [闽南网] 抖音最近大家都很流行弄动态壁纸,很多小伙伴都在问抖音动态壁纸为什么没有声音,应该怎么设置声音呢?下面就赶快和小编一起来了了解一下吧! 抖音动态壁纸为什么没有声音 这个声…

    2023年 2月 1日
  • 如何在支付宝查自己身份证被盗用

    宁波的金女士想用自己的身份证信息去绑定母亲的微信支付,不绑不知道,一绑吓一跳,微信提醒她的身份证已经绑定了5个微信!一个身份证号码最多只能绑定5个微信账户,她的身份证竟被盗用,而且…

    2023年 5月 13日
  • 新版qq说说怎么发长图模式

    近期腾讯QQ方面对 iOS 用户发布了 QQ 8.1.0 内测体验,本次的更新也为我们带来了不少的新功能,下面我们直入主题,首先看看这个内测版有哪些变化。 首先它添加了“简洁模式”…

    2022年 12月 21日
  • 手机qq实用新功能共享屏幕

    iOS和安卓版本的手机QQ都在近日更新到了8.3.3正式版本,并且又带来了一些实用的新功能,一起来体验。 QQ学习模式 打开手机QQ设置–通用,就能选择学习模式,选择后…

    2023年 1月 23日
  • 小度智能屏家用ai学习音响,小度智能音箱蓝牙无线ai语音声控

    前段时间家里宽带到期了,我到移动营业厅去办理续费,看到营业厅海报在宣传小度智能屏音响。原价799的小杜音响,现在只需要每天8毛3分钱,这个价格还包含了互联网电视、安防30天回看和爱…

    互联网 2023年 8月 30日
  • 迅捷路由器设置教程,迅捷路由器设置桥接

    好的,相继发布斐讯路由器、腾达路由器设置教程,现在说一说迅捷路由器如何设置! 想知道之前的斐讯和腾达路由器设置,请点击头像进去观看以往文章! 首先老规矩,还是使用无线设置方法!不打…

    2023年 7月 20日