被老师要求,已经是不得不进行图形界面的开发了,因为程序本体使用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第一部分就到这里了。随缘更新下一期