wxPython中wx.Frame用法

本文详细介绍wx.Frame组件,包括创建、样式和事件。
摘要由CSDN通过智能技术生成

wx.Frame是一个可以手工设置大小和位置的窗体对象,默认情况下具有粗边框和标题栏,同时可以创建并自定义菜单栏、工具栏和状态栏。wx.Frame也是一个容器,可以包含面板对象、控件对象以及子窗体对象等。

wx.Frame的状态栏和工具栏分别通过CreateStatusBar和CreateToolBar函数创建,同时可根据GetClientSize函数返回的大小调整状态栏和工具栏以适配窗体大小。

如果wx.Frame中包含控件,不要将控件直接创建为wx.Frame的子元素,而是应该先创建一个面板(wx.Panel)作为wx.Frame的子元素,再将控件创建至面板中作为面板的子元素,这样可以方便设置窗体背景色以及确保各控件之间的 Tab 键有效。

(注:因为这里只是创建了工具栏和状态栏,没有添加任何其他可显示的东西,所以工具栏和状态栏没有显示任合内容)

  • 窗体样式

wx.CAPTION : 窗体上显示标题栏。

显示标题栏

wx.SYSTEM_MENU : 窗体标题栏上显示系统菜单(最小化按钮、最大化按钮和关闭按钮,默认只显示一个不可用的关闭按钮)。

显示系统菜单

wx.MINIMIZE_BOX : 窗体标题栏上的最小化按钮(需要标题栏样式和系统菜单样式支持)。

最小化按钮

wx.MAXIMIZE_BOX : 窗体标题栏上的最大化按钮(需要标题栏样式和系统菜单样式支持)。

最大化按钮

wx.RESIZE_BORDER : 可改变窗体大小样式。

鼠标拖动边框可以改变窗体大小

通过鼠标拖动变为

wx.CLOSE_BOX : 窗体标题栏上关闭按钮(需要标题栏样式支持)。

显示关闭按钮

wx.CLIP_CHILDREN : 在给窗体绘制子窗口(或控件)时裁剪超出窗体部分内容或被其他子窗口覆盖内容,也就是说在绘制子窗口(或控件)时只绘制可见的那一部分,对于不可见部分不再绘制,这样的话可以提升绘制图形界面的效率,但不会影响外观。例如一个子窗口被另一个子窗口覆盖,那么使用wx.CLIP_CHILDREN可以确保只有可见的子窗口部分才会被绘制,从而减少了绘图操作的数量,提升绘图效率。

wx.DEFAULT_FRAME_STYLE : 是wx.MINIMIZE_BOX(最小化按钮)、 wx.MAXIMIZE_BOX(最大化按钮)、wx.RESIZE_BORDER(改变窗口大小)、wx.SYSTEM_MENU(系统菜单)、wx.CAPTION(标题栏)、wx.CLOSE_BOX(关闭按钮)、wx.CLIP_CHILDREN(裁剪窗体)的组合。

显示窗体默认样式

wx.ICONIZE : 按最简样式、最小尺寸显示窗体(只在Windows系统下有效)。

最简样式、最小体

wx.MINIMIZE : 与wx.ICONIZE样式一样(只在Windows系统下有效)

wx.MAXIMIZE : 按最简样式、最大尺寸(铺满桌面)显示窗体(只在Windows系统下有效)。

显示最简样式,最大窗体

wx.STAY_ON_TOP : 设置为顶层窗体。

始终在顶层(不管是否被选中始终在顶层)

wx.FRAME_TOOL_WINDOW : 任务栏里不显示窗体图标。如果有标题栏的话,显示小标题栏(简化后的标题栏)

任务栏不显示窗体图标,同时显示最小标题栏

wx.FRAME_NO_TASKBAR : 创建一个不在任务栏显示图标的普通窗体。

普通窗口

任务栏里不显示图标

wx.FRAME_FLOAT_ON_PARENT : 设置子窗体始终在父窗体的上一层。使用此样式创建的窗体必须具有父窗体。

子窗口在父窗口之上

wx.FRAME_SHAPED : 允许通过SetShape函数创建不规则窗口

不规则窗体

  • 窗体扩展样式

wx.FRAME_EX_CONTEXTHELP : 是用在Windows系统下,用于设置窗体上下文帮助按钮(不能与wx.MAXIMIZE_BOXwx.MINIMIZE_BOX样式一起)。注意,这是一个扩展样式,必须在窗体创建之前通过调用SetExtraStyle进行设置。

显示上下文帮助按钮

wx.FRAME_EX_METAL : 用在macOS 系统下,金属外观样式显示窗体。

  • 事件处理

wx.EVT_SIZE : wx.Frame窗体改变大小时触发,通过该事件可以动态调整窗体内子控件大小和位置,以适配合大小改变后的wx.Frame窗体。

刚启动窗体时

改变窗体大小后

wx.EVT_MENU_HIGHLIGHT : 当菜单项高亮时触发(菜单选中,如鼠标移动到菜单上或通过键盘选中菜单)时该事件。在默认情况下(未指定事件处理函数),如果设置了帮助字符串(helpString)则实现在状态栏的第一个窗格中显示与所选菜单项的帮助字符串。

定wx.EVT_MENU_HIGHLIGHT事件

在控制台打印菜单帮助信息

默认wx.EVT_MENU_HIGHLIGHT事件处理(不指定wx.EVT_MENU_HIGHLIGHT事件处理)

在状态栏显示高亮菜单项的帮助信息

wx.EVT_CLOSE : 单击关闭按钮(通常是标题栏右上角的“X“)或编程的方式调用Close函数关闭窗体触发该事件。

关闭窗体事件

wx.EVT_ICONIZE : 图标化(最小化)触发该事件。

图标化(最小化)窗体

wx.EVT_MENU_OPEN : 菜单打开触发该事件。

打开菜单

wx.EVT_MENU_CLOSE : 菜单关闭触发事件。

关闭菜单

  • 方法

__init__ (self, parent, id=ID_ANY, title=””, pos=DefaultPosition, size=DefaultSize, style=DEFAULT_FRAME_STYLE, name=FrameNameStr) 

构造函数

参数

parent - 父窗体,可以为None。当一个窗体有父窗体时,该窗体行为会受父窗体影响,但是子窗体行为不会受父窗体影响,如父窗体关闭、最小化或最大化,子窗体也会跟随关闭、最小化或最大化,但是子窗体关闭、最小化或最大化,父窗体不会跟随关闭、最小化或最大化。

id - 窗体标识符。默认值为wx.ID_ANY(-1),表示由系统自动分配一个唯一标识符。

title - 窗体标题,在标题上显示。默认值为””。

pos - 窗体左上角的坐标位置

size - 窗体大小。

style - 窗体样式。默认值为wx.DEFAULT_FRAME_STYLE(具体见窗体样式小节)。

name - 窗体名称,可通过窗体名称找到窗体。

父窗体与子窗体

Centre(selfdirection=wx.BOTH)

设置窗体居中

参数

direction - 居中方向,分为水平居中(wx.HORIZONTAL),垂直居中(wx.VERTICAL),水平、垂直同时居中(wx.BOTH)。默认值为wx.BOTH。

CreateStatusBar(selfnumber=1style=STB_DEFAULT_STYLEid=-1name=StatusBarNameStr)

在窗体底部创建状态栏

参数

number - 创建的状态栏格子数。默认值为1。

style - 状态栏样式。

id - 状态栏标识符。默认值为wx.ID_ANY(-1),表示由系统自动分配一个唯一标识符。

name - 状态栏名称,可通过状态栏名称找到状态栏。

返回

如果创建成功返回指向wx.StatusBar的指针(引用),失败返回None。

创建状态栏

CreateToolBar(selfstyle=TB_DEFAULT_STYLEid=ID_ANYname=ToolBarNameStr)

在窗体的顶部或左边创建工具栏。

参数

style - 工具栏样式。

id - 工具栏标识符。默认值为wx.ID_ANY(-1),表示由系统自动分配一个唯一标识符。

name - 工具栏名称,可通过工具栏名称找到工具栏。

返回

如果创建成功返回指向wx.ToolBar的指针(引用),失败返回None。

创建工具栏

DoGiveHelp(selftextshow)

在状态栏显示窗体的帮助信息。

参数

text - 要显示的帮助字符串。

show - 是否在状态栏显示帮助字符串。默认值为False,表示不显示。

在状态栏中显示窗体帮助信息

GetClientAreaOrigin(self)

获取窗体客户区原点(左上角)坐标。

返回

wx.Point类型的原点(左上角)坐标值。

窗体原点(左上角)坐标

GetMenuBar(self)

返回与当前窗体关联的菜单栏指针(引用)。

返回

如果获取成功返回指向wx.MenuBar的指针(引用),失败返回None。

获取菜单栏指针

GetStatusBar(self)

返回与当前窗体关联的状态栏指针(引用)。

返回

如果获取成功返回指向wx.StatusBar的指针(引用),失败返回None。

获取状态栏指针(引用)

GetStatusBarPane(self)

返回用于显示菜单栏和工具栏帮助字符串的状态栏窗格。

返回

窗格索引

显示帮助窗格索引

GetToolBar(self)

返回与当前窗体关联的工具栏指针(引用)。

返回

如果获取成功返回指向wx.ToolBar的指针(引用),失败返回None

获取工具栏指针(引用)

ProcessCommand(selfid)

模拟点击指定标识的菜单项。

参数

id - 菜单项标识。

返回

成功返回True,失败返回False

模似点击“你好,世界”菜单

SetMenuBar(selfmenuBar)

设置窗体菜单栏。

参数

menuBar - 菜单栏。

设置菜单栏

SetStatusText(selftextnumber=0)

设置状态栏文本。

参数

text - 文本。

number - 窗格索引。

设置状态栏文本

wx.Frame的功能函数就介绍到这里,大家也可以看一下我写的一个日常工作管理小工具源代码(下载地址:https://download.csdn.net/download/MissYuanxi/88427412),里面用到了wx.Frame窗体。

  • 16
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值