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_BOX和wx.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(self, direction=wx.BOTH)
设置窗体居中。
参数
direction - 居中方向,分为水平居中(wx.HORIZONTAL),垂直居中(wx.VERTICAL),水平、垂直同时居中(wx.BOTH)。默认值为wx.BOTH。
CreateStatusBar(self, number=1, style=STB_DEFAULT_STYLE, id=-1, name=StatusBarNameStr)
在窗体底部创建状态栏
参数
number - 创建的状态栏格子数。默认值为1。
style - 状态栏样式。
id - 状态栏标识符。默认值为wx.ID_ANY(-1),表示由系统自动分配一个唯一标识符。
name - 状态栏名称,可通过状态栏名称找到状态栏。
返回
如果创建成功返回指向wx.StatusBar的指针(引用),失败返回None。
创建状态栏
CreateToolBar(self, style=TB_DEFAULT_STYLE, id=ID_ANY, name=ToolBarNameStr)
在窗体的顶部或左边创建工具栏。
参数
style - 工具栏样式。
id - 工具栏标识符。默认值为wx.ID_ANY(-1),表示由系统自动分配一个唯一标识符。
name - 工具栏名称,可通过工具栏名称找到工具栏。
返回
如果创建成功返回指向wx.ToolBar的指针(引用),失败返回None。
创建工具栏
DoGiveHelp(self, text, show)
在状态栏显示窗体的帮助信息。
参数
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(self, id)
模拟点击指定标识的菜单项。
参数
id - 菜单项标识。
返回
成功返回True,失败返回False。
模似点击“你好,世界”菜单
SetMenuBar(self, menuBar)
设置窗体菜单栏。
参数
menuBar - 菜单栏。
设置菜单栏
SetStatusText(self, text, number=0)
设置状态栏文本。
参数
text - 文本。
number - 窗格索引。
设置状态栏文本
wx.Frame的功能函数就介绍到这里,大家也可以看一下我写的一个日常工作管理小工具源代码(下载地址:https://download.csdn.net/download/MissYuanxi/88427412),里面用到了wx.Frame窗体。