wxPython:一曲MFC的挽歌,理想主义的绝唱( 六 )


wxPython:一曲MFC的挽歌,理想主义的绝唱
文章图片
两个输入框 , 一个明文居中 , 一个密写右齐 , 但内容始终保持同步 。 输入焦点不在输入框的时候 , 敲击键盘 , 界面显示对应的键值 。 最上面的按钮响应鼠标左键的按下和弹起事件 , 中间的按钮响应所有的鼠标事件 , 下面的按钮响应滚轮事件和按钮按下的事件 。 另外 , 程序还绑定了窗口关闭事件 , 重新定义了关闭函数 , 增加了确认选择 。
程序框架
5.1菜单栏、工具栏和状态栏
通常 , 一个完整的窗口程序一般都有菜单栏、工具栏和状态栏 。 下面的代码演示了如何创建菜单栏、工具栏和状态栏 , 顺便演示了类的静态属性的定义和用法 。 不过 , 说实话 , wx的工具栏有点丑 , 幸好 , wx还有一个AUI的工具栏比较漂亮 , 我会在后面的例子里演示它的用法 。
importwxclassMainFrame(wx.Frame):"""从wx.Frame派生主窗口类"""id_open=wx.NewIdRef()id_save=wx.NewIdRef()id_quit=wx.NewIdRef()id_help=wx.NewIdRef()id_about=wx.NewIdRef()def__init__(self,parent):"""构造函数"""wx.Frame.__init__(self,parent,style=wx.DEFAULT_FRAME_STYLE)self.SetTitle('菜单、工具栏、状态栏')self.SetIcon(wx.Icon('res/wx.ico'))self.SetBackgroundColour((224,224,224))#设置窗口背景色self.SetSize((360,180))self._create_menubar()#菜单栏self._create_toolbar()#工具栏self._create_statusbar()#状态栏self.Center()def_create_menubar(self):"""创建菜单栏"""self.mb=wx.MenuBar()#文件菜单m=wx.Menu()m.Append(self.id_open,'打开文件')m.Append(self.id_save,'保存文件')m.AppendSeparator()m.Append(self.id_quit,'退出系统')self.mb.Append(m,'文件')self.Bind(wx.EVT_MENU,self.on_open,id=self.id_open)self.Bind(wx.EVT_MENU,self.on_save,id=self.id_save)self.Bind(wx.EVT_MENU,self.on_quit,id=self.id_quit)#帮助菜单m=wx.Menu()m.Append(self.id_help,'帮助主题')m.Append(self.id_about,'关于...')self.mb.Append(m,'帮助')self.Bind(wx.EVT_MENU,self.on_help,id=self.id_help)self.Bind(wx.EVT_MENU,self.on_about,id=self.id_about)self.SetMenuBar(self.mb)def_create_toolbar(self):"""创建工具栏"""bmp_open=wx.Bitmap('res/open_mso.png',wx.BITMAP_TYPE_ANY)#请自备按钮图片bmp_save=wx.Bitmap('res/save_mso.png',wx.BITMAP_TYPE_ANY)#请自备按钮图片bmp_help=wx.Bitmap('res/help_mso.png',wx.BITMAP_TYPE_ANY)#请自备按钮图片bmp_about=wx.Bitmap('res/info_mso.png',wx.BITMAP_TYPE_ANY)#请自备按钮图片self.tb=wx.ToolBar(self)self.tb.SetToolBitmapSize((16,16))self.tb.AddTool(self.id_open,'打开文件',bmp_open,shortHelp='打开',kind=wx.ITEM_NORMAL)self.tb.AddTool(self.id_save,'保存文件',bmp_save,shortHelp='保存',kind=wx.ITEM_NORMAL)self.tb.AddSeparator()self.tb.AddTool(self.id_help,'帮助',bmp_help,shortHelp='帮助',kind=wx.ITEM_NORMAL)self.tb.AddTool(self.id_about,'关于',bmp_about,shortHelp='关于',kind=wx.ITEM_NORMAL)self.tb.Realize()def_create_statusbar(self):"""创建状态栏"""self.sb=self.CreateStatusBar()self.sb.SetFieldsCount(3)self.sb.SetStatusWidths([-2,-1,-1])self.sb.SetStatusStyles([wx.SB_RAISED,wx.SB_RAISED,wx.SB_RAISED])self.sb.SetStatusText('状态信息0',0)self.sb.SetStatusText('',1)self.sb.SetStatusText('状态信息2',2)defon_open(self,evt):"""打开文件"""self.sb.SetStatusText(u'打开文件',1)defon_save(self,evt):"""保存文件"""self.sb.SetStatusText(u'保存文件',1)defon_quit(self,evt):"""退出系统"""self.sb.SetStatusText(u'退出系统',1)self.Destroy()defon_help(self,evt):"""帮助"""self.sb.SetStatusText(u'帮助',1)defon_about(self,evt):"""关于"""self.sb.SetStatusText(u'关于',1)if__name__=='__main__':app=wx.App()frame=MainFrame(None)frame.Show()app.MainLoop()代码里面用到了4个16x16的工具按钮 , 请自备4个图片文件 , 保存路径请查看代码中的注释 。 代码运行界面如下图所示 。
wxPython:一曲MFC的挽歌,理想主义的绝唱
文章图片