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

相关推荐

  • 电脑突然断网连接不上网络怎么办

    很多小伙伴在使用电脑的时候,经常会出现断网,网络无法连接或者连接不上的情况,反复尝试好几次都没有效果。那么今天小编就教大家3种方法,解决无法连接网络的问题。 一、更新驱动程序 1、…

    2023年 5月 1日
  • cdlinux破解WiFi详细教程

    今日主题:如何破解WIFI 准备工具 •笔记本一台 •usb无线网卡【我用的是小米的】 •kali系统【可以在虚拟机里装,建议用2019年及以下版本 VMware Workstat…

    2023年 9月 7日
  • 为了薅免费会员这届年轻人有多拼

    随着国内长视频网站会员频频涨价,这届年轻人休闲娱乐的成本也与日俱增。 7月27日,芒果TV发布通知,将于2022年8月9日零点调整芒果TV会员、芒果TV全屏会员价格。调整后,芒果T…

    2023年 1月 28日
  • 抖音开场怎么做(抖音卡点开场怎么做)

    通过正确的方法来运营抖音,有助于提升直播间的人气。(停播几天,今天用正确的方法来尝试一下)。 停播几天了,想了很多,想跟刚开始创业的家人们说几句心里话。在抖音创业的过程中,正确的认…

    2023年 7月 23日
  • 驾驶证扣分怎么查询罚款交了没(驾驶证扣分怎么查询电话号码)

    那么为了让大家能够详细了解驾驶证扣分罚款怎么交查询系统怎么用相关法律问题,下面将由法律快车小编为大家详细介绍相关内容,希望对大家有所帮助。   一、驾驶证扣分罚款怎么交查询系统怎么…

    2023年 3月 27日
  • pandownload违法案例

    百度云网盘的确是网盘界的大佬了,但正是因为其开始以身份自傲,对用户限速如今也遭遇上了“垄断”骂名。而网民们对于百度网盘的群愤正因“Pandownload遭禁”一事愈发激烈,甚至开始…

    2023年 10月 12日
  • 电脑网络好使手机wifi连不上

    大家是不是在使用手机的时候,偶尔会碰到手机突然搜不到WiFi的情况,那么,手机搜不到该如何解决呢?教程如下。 1、我们打开手机设置,在设置功能页面中,下滑找到通用选项,点击进入,再…

    2023年 6月 8日
  • 网络工程中网线如何接面板(网络布线中线管使用方法)

    在工程布线中,网线布线接水晶头是对网络传输信号中起到一个很重要的步骤,如果水晶头接得不好,网络传输效果会非常差,绝大可能会不通。 网络接水晶头的线序是按照国标标准接法来接,制作网线…

    2023年 6月 25日
  • 微信充话费支付成功,话费没有到账怎么办

    很多朋友使用微信充值话费之后发现没到账,就不知道该怎么办了,本篇文章教大家如何解决此类问题。 一、查看账单 既然用户是通过微信充值了话费,发现没到账的话,肯定要优先查看微信充值账单…

    2023年 1月 14日
  • 职场技能:自媒体运营的5个阶段,以及增长策略

    在发展的过程中,你的公众号将经历五个不同的阶段,这五个阶段与产品生命周期类似,在不同的阶段需要采用不同的增长策略。 创新者,占比2.5%,是市场早起的敢于尝试新事物的人; 早期使用…

    2022年 12月 25日