[学习记录]面对wxpython的长跑(100米:wxpython安装,相关文件,wx.App,wx.Frame)

Posted 冷血无情康纳酱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[学习记录]面对wxpython的长跑(100米:wxpython安装,相关文件,wx.App,wx.Frame)相关的知识,希望对你有一定的参考价值。

被老师要求,已经是不得不进行图形界面的开发了,因为程序本体使用python写的,所以自然第一次进行图形界面开发就选择了wxpython,wxpython是一款非常优秀的GUI图形库,写起来也相对简洁方便。

安装时直接pip install wxpython即可。

 

demo程序以及其它官方相关文件下载地址:https://extras.wxpython.org/wxPython4/extras/

官方文档:https://docs.wxpython.org/wx.1moduleindex.html

 

下面进入正题:首先先是例行的hello world

import wx
app=wx.App()
win = wx.Frame(None,-1,title = \'Hello World\')
win.Show()
app.MainLoop()

运行这段代码,就会弹出如下窗口

首先是最重要的wx.App类,官方文档如下:

大概意思整理一下即:每个使用wx的引用都必须有唯一的一个wx.App实例,并且所有的UI对象都要在wx.App的实例创建之后才能创建。wx.App的创建确保了所有和wxpython相关的gui平台以及其它内容都被完整初始化了。wx.App.MainLoop()则是另外一个重要的语句,该循环用来接收GUI事件(event)

 


 

其次是wx.Frame类:

Frame类就是我们平常看到的那种有标题框的界面框,里面可以容纳window类但不能放dialog和frame。构造函数如下

Frame(parent, id=ID_ANY, title="", pos=DefaultPosition,size=DefaultSize, style=DEFAULT_FRAME_STYLE, name=FrameNameStr)

parent用来指定父类,ID为一个整数,title中的内容会显示到标题上,pos为初始位置,size为窗口大小(x,y),style有固定取值,name不要管。

 

 

style的常用取值如下:

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:初始以最小化形式出现

 

 Frame的相关事件:

EVT_CLOSE:当一个Frame正在被关闭的时候发生该事件,可以使点击红叉叉或者是调用wx.Window.Close

EVT_ICONIZE:窗口最小化

EVT_MENU_OPEN:当一个菜单被打开时

EVT_MENU_CLOSE:当一个菜单刚被关闭时

EVT_MENU_HIGHLIGHT:针对某一个菜单的高亮事件,self.Bind(wx.EVT_MENU_HIGHLIGHT, 动作函数, self.gg.GetMenuItems()[0]),需要监听的是一个wx.MenuItem对象。

EVT_MENU_HIGHLIGHT_ALL:需要如下绑定self.Bind(wx.EVT_MENU_HIGHLIGHT_ALL, 动作函数, wx.MenuBar类),当鼠标滑过任何一个菜单的时候就有响应,当EVT_MENU_HIGHLIGHT_ALL发生时无法响应EVT_MENU_HIGHLIGHT事件

 

主要接口:

CreateStatusBar(self, number=1, style=STB_DEFAULT_STYLE, id=0, name=StatusBarNameStr)

创建底端状态栏,number控制状态栏有几栏,style参考wx.StatusBar中提到的style,返回创建的wx.StatusBar实例

CreateToolBar(self, style=TB_DEFAULT_STYLE, id=ID_ANY, name=ToolBarNameStr)

在左边或顶部创建工具栏,返回创建的wx.ToolBar实例

GetClientAreaOrigin , GetMenuBar,GetStatusBar,GetStatusBarPane,GetToolBar:

都是返回相关属性或参数的。

PushStatusText(self,text,number=0):

向状态栏中添加文字,text为字符串,number标记哪一个状态栏中

SetMenuBar(self, menuBar),SetStatusBar(self, statusBar),SetStatusBarPane(self, n),SetStatusText(self, text, number=0),SetStatusWidths(self, widths),SetStatusWidths(self, widths):

设置相关属性或是将菜单状态栏等加入进来。

 

 

那么关于wxpython第一部分就到这里了。随缘更新下一期

以上是关于[学习记录]面对wxpython的长跑(100米:wxpython安装,相关文件,wx.App,wx.Frame)的主要内容,如果未能解决你的问题,请参考以下文章

刷题BZOJ 2959 长跑

学习笔记(13)

一球从100米高度自由落下, 每次落地后反跳回原高度的一半; 再落下,求它在第10次落地时, 共经过多少米?第10次反弹多高?

记录android百度地图的一些细节功能的实现。

清华男的大学4年 (转)

[蓝桥杯][算法提高VIP]3000米排名预测