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个图片文件 , 保存路径请查看代码中的注释 。 代码运行界面如下图所示 。
文章图片
- 中兴超越中兴:夯实第一曲线 发力第二曲线
- 抖音回首大唐盛世千百年逢君天涯不过一瞬间一曲悠扬沧海复桑田江湖故人念是什么歌 歌曲分享
- Facebook|Facebook 大宕机:远程工作的一曲悲歌
- dns|Facebook 大宕机:远程工作的一曲悲歌
- 独家|腾讯音乐:一曲肝肠断,美股何处觅知音?
- 抖音江上一曲低诵晚风唱出心伤才知情浓鸳鸯离散谁知其中饱尝辛酸谁人能懂是什么歌 歌曲分享