WxPython BoxSizer布局详解

boxsizer分为横向和纵向两种,如果你想要把控件水平排列,就使用横向boxsizer,如果你想让控件都垂直排列,就使用纵向boxsizer,当然很多界面既有横向排列又有纵向排列的控件,我们就可以使用boxsizer的嵌套。

思路分析:
整体思路:
先整个窗口Frame
在窗口上建立一个面板Panel,用于放控件(Button,StaticText,TextCtl,CheckBox等控件),尺寸器(横向和纵向BoxSizer,相互嵌套使用)
最后把一些标签,控件放置在横向或纵向BoxSidzer中,进行布局;
具体说明:
创建一个sizer的步骤:
1.创建你想用来自动调用尺寸的panel或container(容器)。
2.创建sizer。
3.创建你的子窗口。
4.使用sizer的Add()方法来将每个子窗口添加给sizer。
sizer可以嵌套,这意味你可以像窗口对象一样添加别的sizer到父sizer。
5.调用容器的SetSizer(sizer)方法。
最常用的wxPython的sizer
1.wx.BoxSizer:在一条线上布局子窗口部件。wx.BoxSizer的布局方向可以是水平或坚直的,并且可以在水平或坚直方向上包含子sizer以创建复杂的布局。在项目被添加时传递给sizer的参数控制子窗口部件如何根据box的主体或垂直轴线作相应的尺寸调整。
2. wx.FlexGridSizer:一个固定的二维网格,它与wx.GridSizer的区别是,行和列根据所在行或列的最大元素分别被设置。
3. wx.GridSizer:一个固定的二维网格,其中的每个元素都有相同的尺寸。当创建一个grid sizer时,你要么固定行的数量,要么固定列的数量。项目被从左到右的添加,直到一行被填满,然后从下一行开始。
4. wx.GridBagSizer:一个固定的二维网格,基于wx.FlexGridSizer。允许项目被放置在网格上的特定点,也允许项目跨越多和网格区域。
5. wx.StaticBoxSizer:等同于wx.BoxSizer,只是在box周围多了一个附加的边框(有一个可选的标签)。
wx.Sizer的方法:
Add(size, proportion=0,flag=0, border=0,userData=None)
第一个添加一个wxWindow,
第二个添加一个嵌套的sizer,第三个添加空的空间,用作分隔符。参数proportion管理窗口总尺寸,它是相对于别的窗口的改变而言的,它只对wx.BoxSizer有意义。参数flag是一个位图,针对对齐、边框位置,增长有许多不同的标志。参数border是窗口或sizer周围以像素为单位的空间总量。userData使你能够将对象与数据关联,例如,在一个子类中,可能需要更多的用于尺寸的信息。
Fit(window)
FitInside(window ):调整window尺寸以匹配sizer认为所需要的最小化尺寸。
这个参数的值通常是使用sizer的窗口。
FitInside()是一个类似的方法,只不过将改变窗口在屏幕上的显示替换为只改变它的内部实现。它用于scroll panel中的窗口以触发滚动栏的显示。
GetSize():以wx.Size对象的形式返回sizer的尺寸。
GetPosition():以wx.Point对象的形式返回sizer的位置。
GetMinSize():以wx.Size对象的形式返回完全填充sizer所需的最小尺寸。
Layout():强迫sizer去重新计算它的孩子的尺寸和位置。在动态地添加或删除了一个孩子之后调用。
Prepend(…):与Add()相同(只是为了布局的目的,把新的对象放在sizer列表的开头)。
Remove(window)
Remove(sizer)
Remove(nth):从sizer中删除一个对象。
SetDimension(x, y, width,height):强迫sizer按照给定的参数重新定位它的所有孩子。

详细参照:Boxsizer布局学习以及一系列的Wxpython控件学习
代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os,time
import wx,telnetlib
import win32api,win32con
import re,os


#远程telnet进入OLT命令行
def TelnetOpen(event):
    print("")
def DrawPanel():
    #设置画布上面的控制信息
    app=wx.
  • 7
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: wxPython中的BoxSizer布局是一种方便的布局方式,它可以将控件按照水平或垂直方向排列,并且可以自动调整控件的大小和位置。BoxSizer布局可以用于创建各种类型的用户界面,包括对话框、面板和窗口等。 BoxSizer布局有两种类型:水平和垂直。水平BoxSizer将控件按照水平方向排列,而垂直BoxSizer将控件按照垂直方向排列。在创建BoxSizer布局时,需要指定控件的方向和间距。 BoxSizer布局还支持控件的对齐方式,包括左对齐、右对齐、居中对齐和填充对齐。可以通过设置BoxSizer的对齐方式来控制控件的位置和大小。 总之,BoxSizer布局是一种非常灵活和方便的布局方式,可以帮助开发者快速创建各种类型的用户界面。 ### 回答2: wxPython是Python语言的GUI编程库之一,BoxSizer是wxPython的一种布局管理器,用于管理和布局子控件,可以实现水平和垂直方向的布局详解如下。 一、BoxSizer的类型 在wxPython中,BoxSizer有三种类型: 1. wx.BoxSizer:包含子窗口的顺序布置在一个主方向上(水平或垂直); 2. wx.StaticBoxSizer:一个有标题框的内框容器,用于容纳其它子控件; 3. wx.StaticBoxSizer预定义了一个静态框,不允许任何子控件越出框的边界。 二、BoxSizer的参数 在使用BoxSizer时,需要注意以下几个参数: 1. parent:父窗口 2. orient:方向,wx.HORIZONTAL或者wx.VERTICAL 3. proportion:拉伸因子,控制子控件在父容器改变大小时的相对拉伸。 4. flag:控制控件在容器中的位置和大小的标志 5. border:设置边框的大小 三、wx.BoxSizer详解 wx.BoxSizer接受水平和垂直排列的可调整大小的小部件,可以通过下面的步骤设置: 1. 创建wx.BoxSizer(parent, orient)对象; 2. 创建并添加子控件(window对象); 3. 将控件添加到wx.BoxSizer中; 4. 将wx.BoxSizer关联到父窗口。 wx.BoxSizer常用的方法和属性: 1. wx.BoxSizer.Add():添加子控件,参数为控件对象、拉伸因子(可选)、标志(可选)、边界(可选); 2. wx.BoxSizer.AddSpacer():添加空间(提供指定大小的自由空间),参数为大小; 3. wx.BoxSizer.Clear():移除所有子控件; 4. wx.BoxSizer.Remove():移除特定的子控件; 5. wx.BoxSizer.Layout():重新布局子窗口以匹配容器的新大小。 四、wx.StaticBoxSizer详解 wx.StaticBoxSizer是wx.StaticBox的封装,包括一个带边框的框,非常适合分组的UI元素。 wx.StaticBoxSizer的使用与wx.BoxSizer相似,主要区别在于: 1. 创建wx.StaticBoxSizer(parent, wx.StaticBox(parent, label), orient)对象; 2. 在wx.StaticBoxSizer对象中添加控件,而不是直接添加到父窗口; 3. 将wx.StaticBoxSizer关联到父窗口。 总结: BoxSizer是wxPython中灵活有用的布局管理器,BoxSizer支持WYSIWYG设计,并且非常容易使用。BoxSizer可以容纳空隙、间距、等距占位、子容器等,是wxPython布局管理器的重要组成部分,方便开发人员快速实现自己需要的布局效果。 ### 回答3: wxPython 是 Python 语言的 GUI 工具包,提供了丰富的 GUI 组件和布局管理器。其中,BoxSizer 是一种基于方向组合的布局管理器,它可以将窗口中的各个组件沿着水平或垂直方向排列。 BoxSizer 的基本用法是先创建一个 BoxSizer,并指定它的方向(水平或垂直),然后将需要排列的组件添加到 BoxSizer 中即可。组件可以使用 Add 方法添加到 BoxSizer 中,也可以使用 AddStretchSpacer 方法添加一个空间站位符,以调整组件之间的间距和布局BoxSizer 还支持多级嵌套的布局,比如可以创建一个主 BoxSizer,再在其中添加多个子 BoxSizer,通过这种方式可以实现复杂的布局。同时,BoxSizer 还支持一些属性和方法,如 SetMinSize、SetMaxSize、SetSizeHints 等,可以帮助我们更加灵活地控制布局。 在实际使用中,我们可以根据不同的场景选择合适的 BoxSizer 方向和属性,比如在创建主窗口时,可以使用水平方向的 BoxSizer 将工具栏和主区域排列在一起,以腾出更多的空间;在创建某个特定的子组件时,可以使用垂直方向的 BoxSizer 将多个控件排列在一起,以提高界面的整体美观性。 总之,BoxSizer 是 wxPython 中非常实用和灵活的布局管理器之一,通过合理的使用 BoxSizer,我们可以轻松地实现各种复杂的 GUI 布局

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值