当前位置: 首页 > news >正文

上海网站外包建设小米发布会13

上海网站外包建设,小米发布会13,常州微信网站建设公司,wordpress底部友情链接前言 wxPython是基于Python的跨平台GUI扩展库#xff0c;对wxWidgets#xff08; C 编写#xff09;封装实现。GUI程序的开发中界面布局是很重要的一个部分#xff0c;合理的页面布局能够给予用户良好使用体验。虽然在GUI的控件和窗口布局上可以使用坐标#xff0c;但更多…前言 wxPython是基于Python的跨平台GUI扩展库对wxWidgets C 编写封装实现。GUI程序的开发中界面布局是很重要的一个部分合理的页面布局能够给予用户良好使用体验。虽然在GUI的控件和窗口布局上可以使用坐标但更多且更方便的是用sizer来布局。本文主要介绍wxPython的布局管理应用以及在此基础上实现的页面切换功能。 最小架构实现 wxPython程序由组件wx.App、wx.Frame、wx.Panel以及其他widget控件/窗体如wx.ComboBox, wx.Button组成。一个wxPython程序只有一个wx.App创建的实例用于执行事件循环至少一个Frame对象作为控件的容器调用Show()方法使其显示Frame中至少有一个Panel用来控制布局的窗口而其他的控件建立在Panel之上。 在App类中未定义init()方法但在Python中实例化一个对象时父方法wx.App.init()将被自动调用如果定义了init()方法需要手动调用基类的init()方法如Frame类和Panel类中的实现创建Frame类、Panel类可更灵活地设计我们所需要的GUI。OnInit()是wxPython所特有的一个方法在应用程序创建后到事件循环开始前被wx.App父类调用需返回一个True的布尔值。SetTopWindow()方法设置当前Frame为应用程序的顶级窗口该方法继承自wx.App父类。 应用程序一旦进入主事件循环控制权将转交给wxPython程序响应用户的鼠标和键盘事件。当应用程序的所有Frame关闭后app.MainLoop()方法结束并退出程序。 classPanel(wx.Panel):def__init__(self,parent):wx.Panel.__init__(self,parentparent,id-1)passclassFrame(wx.Frame):def__init__(self):wx.Frame.__init__(self,parent None,title u量化软件,size(1000,600),stylewx.DEFAULT_FRAME_STYLE^wx.MAXIMIZE_BOX)self.MPL Panel(self)passclassApp(wx.App):defOnInit(self):self.frame Frame()self.frame.Show()self.SetTopWindow(self.frame)returnTrueif__name__ __main__:app App()app.MainLoop() 布局管理介绍 控件可通过绝对坐标形式定位在容器中由构造函数中pos参数指定以像素为单位的坐标值。如wx.TextCtrl的构造函数所示 wx.TextCtrl(parent,id,value,poswx.DefaultPostion,sizewx.DefaultSize,style0,validatorwx.DefaultValidator,namewx.TextCtrlNameStr) 绝对定位方式需为每一个控件设计大小和位置修改布局时十分繁琐而且调整容器Frame或Panel尺寸时控件无法对应改变。wxPython的布局管理器Sizer能对容器中的控件进行更优雅的管理随着容器尺寸的变化自动计算控件最优化的大小和位置。 wxPython中定义的sizer主要有wx.BoxSizerwx.StaticBoxSizerwx.GridSizerwx.FlexGridSizer和wx.GridBagSizer它们继承了Wx.Sizer基类并在此之上各自具有管理窗口布局的规则。 GridSizer: 最基础的二维网格布局可指定行列每个网格的尺寸相同。控件以左到右和由上到下方顺序添加于网格内。 FlexGridSizer在Grid的基础上进行了改进网格的尺寸可以不同。 GridBagSizer最灵活的网格布局器可以随意放置在网格中放置组件。 BoxSizer在一条水平线或垂直线上进行布局网格的尺寸可以不同通常用于嵌套。 StaticBoxSizer标准的box sizer提供了围绕框以及顶部文本标签。 以下通过例程介绍Sizer布局应用。wx.BoxSizer的布局方向分为横向和纵向两种并且可以在横向或纵向方向上包含子sizer以创建嵌套的布局。按下表所示要求进行布局即ParaPanel、MPL、RightPanel三个面板采用横向boxsizer布局。ParaPanel嵌套wx.StaticBoxSizer布局器及wx.RadioBox和wx.TextCtrl控件三者采用纵向boxsizer排布。RightPanel中嵌套wx.FlexGridSizer布局器指定3个wx.Button控件按网格尺寸排布。1 分别创建ParaPanel、MPL、RightPanel面板创建一个纵向wx.BoxSizer用于排列ParaPanel中控件创建一个横向wx.BoxSizer用于排布ParaPanel、MPL、RightPanel面板。 self.MPL PanelA(self)self.ParaPanelwx.Panel(self,-1)self.RightPanelwx.Panel(self,-1)vboxnetA wx.BoxSizer(wx.VERTICAL)#纵向box self.HBoxPanelwx.BoxSizer(wx.HORIZONTAL) 2创建一个wx.StaticBox静态框对象创建wx.StaticBoxSizer布局管理器将静态框作为参数传入进行布局管理创建控件并通过Add()方法添加至StaticBoxSizer布局管理器中。 paraInput_Box wx.StaticBox(self.ParaPanel, -1, u参数输入) paraInput_Sizer wx.StaticBoxSizer(paraInput_Box, wx.VERTICAL) stockCode_Text wx.StaticText(self.ParaPanel, -1, u模块名称) stockData_Text wx.StaticText(self.ParaPanel, -1, u模块型号) paraInput_Sizer.Add(stockCode_Text,proportion0,flagwx.EXPAND|wx.LEFT|wx.BOTTOM|wx.RIGHT,border5) paraInput_Sizer.Add(stockData_Text,proportion0,flagwx.EXPAND|wx.LEFT|wx.BOTTOM|wx.RIGHT,border5) 3 创建wx.GridSizer布局管理器创建控件通过Add()方法添加至均匀分布的二维网格中即同一行的控件具有相同高度同一列中控件具有相同的宽度。对RightPanel调用SetSizer()方法使布局有效。 self.FlexGridSizerwx.FlexGridSizer(rows3,cols1,vgap3,hgap3)self.FlexGridSizer.Add(self.Button1,proportion 0,border 5,flag wx.ALL |wx.EXPAND)self.FlexGridSizer.Add(self.Button2,proportion 0,border 5,flag wx.ALL |wx.EXPAND)self.FlexGridSizer.Add(self.Button3,proportion 0,border 5,flag wx.ALL |wx.EXPAND)self.FlexGridSizer.SetFlexibleDirection(wx.BOTH)self.RightPanel.SetSizer(self.FlexGridSizer) 4 ParaPanel中控件添加至纵向BoxSizer中而后与MPL、RightPanel一同添加至横向BoxSizer以实现嵌套布局。Add()方法中proportion为比例控制假如在横向BoxSizer中两个控件的proportion相等那么Frame尺寸横向改变时控件大小保持相同若proportion0则大小不变。 vboxnetA.Add(paraInput_Sizer,proportion0,flagwx.EXPAND|wx.LEFT|wx.BOTTOM|wx.RIGHT,border5)vboxnetA.Add(self.IndicatInput_Box,proportion0,flagwx.EXPAND|wx.LEFT|wx.BOTTOM|wx.RIGHT,border5)vboxnetA.Add(self.TextAInput,proportion0,flagwx.EXPAND|wx.LEFT|wx.BOTTOM|wx.RIGHT,border5)self.ParaPanel.SetSizer(vboxnetA)self.HBoxPanel.Add(self.ParaPanel,proportion 1,border 2,flag wx.ALL |wx.EXPAND)self.HBoxPanel.Add(self.MPL,proportion 1,border 2,flag wx.ALL |wx.EXPAND)self.HBoxPanel.Add(self.RightPanel,proportion 1,border 2,flag wx.ALL |wx.EXPAND)self.SetSizer(self.HBoxPanel)页面切换实现 此章节介绍在GUI界面中点击按钮实现主页面的切换功能。sizer布局器除了Add()方法外还包括Detach()方法移除控件Insert()方法插入控件等可支持动态布局的实现此处在按钮事件任务中动态创建OptionPanel面板使用Replace()方法替换MPL面板通过Layout()函数强制Sizer重新绘制界面。点击Diag按钮后界面如下图所示。defButton1Event(self,event):#创建选项栏目面板self.OptionPanelPanelB(self)self.HBoxPanel.Hide(self.MPL)self.HBoxPanel.Replace(self.MPL,self.OptionPanel)self.SetSizer(self.HBoxPanel)self.HBoxPanel.Layout()self.ProcessPanelB()
http://wiki.neutronadmin.com/news/243360/

相关文章:

  • 我的世界封面制作网站高性能网站建设指南 书
  • 网站的前端和后端wordpress分类目录seo
  • 软件开发模式有哪些kj6699的seo综合查询
  • 廊坊网站建设推广经验eclipse可以做门户网站嘛
  • 网站备案包括做空气开关那个网站推广比较好
  • 肇庆网站开发建立自信
  • 免费建微网站深圳外贸网站建设口报关
  • 如何知道网站是否备案过佛山外贸网站建设方案
  • 做网站网站犯法吗wordpress主题安装完后前台打不开
  • 专业的手机网站建设公司免费高清视频软件
  • 如何做国际贸易网站零食店网站构建策划报告
  • 互联网客户做网站网站建设服务的会计处理
  • 免费黄页营销网站网站开发高级工程师
  • 东莞微网站建设费用有没有一个网站做黄油视频
  • 哪些网站平台可以做推广wordpress国内不使用方法
  • 个人做网站租云服务器最近播放中文版在线观看电视剧
  • 合肥市建设工程市场价格信息网站中国500强企业
  • 网站建设所需的软件邯郸自媒体有哪些
  • 如何给网站做防御成都网站维护
  • ps做网站图片水印中国建设银行网站的社保板块在哪里
  • 做网站如何分类宁波公司网站开发
  • 简述建设一个网站的一般过程阿里云网站建设方案书
  • 导航网站html模板外包接单网
  • 推广网站可以做跳转吗建设网站的费用属于
  • thinkphp2.1网站挂文件怎么做网站小图标
  • 设计方面的网站茌平网站建设菜谱制作
  • 哪个网站看电影做便宜网站友情链接检测
  • 教育机构网站源码网站文章内容排版要求
  • 邯郸网站制作哪家好苏州相城区网站建设
  • 上海网站建设 网站制作做网站需要简介