python之wxPython菜单使用详解


Posted in Python onSeptember 28, 2014

本文实例讲述了python中wxPython菜单的使用方法,分享给大家供大家参考。具体如下:

先来看看下面这段代码:

import wx 
APP_EXIT=1  #定义一个控件ID 
 
class Example(wx.Frame): 
  def __init__(self, parent, id, title): 
    super(Example,self).__init__(parent, id, title)    #调用你类的初始化 
 
    self.InitUI()      #调用自身的函数 
 
  def InitUI(self):  #自定义的函数,完成菜单的设置 
 
    menubar = wx.MenuBar()    #生成菜单栏 
    filemenu = wx.Menu()    #生成一个菜单 
 
 
    qmi = wx.MenuItem(filemenu, APP_EXIT, "Quit")   #生成一个菜单项 
    qmi.SetBitmap(wx.Bitmap("2.bmp"))    #给菜单项前面加个小图标 
    filemenu.AppendItem(qmi)      #把菜单项加入到菜单中 
 
    menubar.Append(filemenu, "&File")    #把菜单加入到菜单栏中 
    self.SetMenuBar(menubar)      #把菜单栏加入到Frame框架中 
 
    self.Bind(wx.EVT_MENU, self.OnQuit, id=APP_EXIT)  #给菜单项加入事件处理 
 
    self.SetSize((300, 200))      #设置下Frame的大小,标题,和居中对齐 
    self.SetTitle("simple menu") 
    self.Centre() 
 
    self.Show(True)    #显示框架 
 
  def OnQuit(self, e):  #自定义函数 响应菜单项 
    self.Close() 
 
def main(): 
 
  ex = wx.App()      #生成一个应用程序 
  Example(None, id=-1, title="main")  #调用我们的类 
  ex.MainLoop()#消息循环 
 
if __name__ == "__main__": 
  main()

运行效果如下图所示:

python之wxPython菜单使用详解

这里再来解释下几个API,官方文档如下:

wxMenuItem* wxMenu::AppendSeparator()

Adds a separator to the end of the menu.
See also:
Append(), InsertSeparator()

wxMenuItem::wxMenuItem ( wxMenu *  parentMenu = NULL,
     int  id = wxID_SEPARATOR,
     const wxString &  text = wxEmptyString,
     const wxString &  helpString = wxEmptyString,
    wxItemKind  kind = wxITEM_NORMAL,
    wxMenu *  subMenu = NULL 
  )

Constructs a wxMenuItem object.
Menu items can be standard, or "stock menu items", or custom. For the standard menu items (such as commands to open a file, exit the program and so on, see Stock items for the full list) it is enough to specify just the stock ID and leave text and helpString empty. Some platforms (currently wxGTK only, and see the remark in SetBitmap() documentation) will also show standard bitmaps for stock menu items.
Leaving at least text empty for the stock menu items is actually strongly recommended as they will have appearance and keyboard interface (including standard accelerators) familiar to the user.
For the custom (non-stock) menu items, text must be specified and while helpString may be left empty, it's recommended to pass the item description (which is automatically shown by the library in the status bar when the menu item is selected) in this parameter.
Finally note that you can e.g. use a stock menu label without using its stock help string:
       
 // use all stock properties:
        helpMenu->Append(wxID_ABOUT);

        // use the stock label and the stock accelerator but not the stock help string:
        helpMenu->Append(wxID_ABOUT, "", "My custom help string");

        // use all stock properties except for the bitmap:
        wxMenuItem *mymenu = new wxMenuItem(helpMenu, wxID_ABOUT);
        mymenu->SetBitmap(wxArtProvider::GetBitmap(wxART_WARNING));
        helpMenu->Append(mymenu);
that is, stock properties are set independently one from the other.

Parameters:
  parentMenu  Menu that the menu item belongs to. Can be NULL if the item is going to be added to the menu later.
  id  Identifier for this menu item. May be wxID_SEPARATOR, in which case the given kind is ignored and taken to be wxITEM_SEPARATOR instead.
  text  Text for the menu item, as shown on the menu. See SetItemLabel() for more info.
  helpString  Optional help string that will be shown on the status bar.
  kind  May be wxITEM_SEPARATOR, wxITEM_NORMAL, wxITEM_CHECK or wxITEM_RADIO.
  subMenu  If non-NULL, indicates that the menu item is a submenu.

wxMenuItem* wxMenu::Append (  int  id,
     const wxString &  item = wxEmptyString,
     const wxString &  helpString = wxEmptyString,
    wxItemKind  kind = wxITEM_NORMAL 
  )     
Adds a menu item.
Parameters:
  id  The menu command identifier.
  item  The string to appear on the menu item. See wxMenuItem::SetItemLabel() for more details.
  helpString  An optional help string associated with the item. By default, the handler for the wxEVT_MENU_HIGHLIGHT event displays this string in the status line.
  kind  May be wxITEM_SEPARATOR, wxITEM_NORMAL, wxITEM_CHECK or wxITEM_RADIO.

Example:
        m_pFileMenu->Append(ID_NEW_FILE, "&New file\tCTRL+N", "Creates a new XYZ document");
or even better for stock menu items (see wxMenuItem::wxMenuItem):
        m_pFileMenu->Append(wxID_NEW, "", "Creates a new XYZ document");
Remarks:
This command can be used after the menu has been shown, as well as on initial creation of a menu or menubar.

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
flask中使用SQLAlchemy进行辅助开发的代码
Feb 10 Python
python中pycurl库的用法实例
Sep 30 Python
python中threading超线程用法实例分析
May 16 Python
Python正则表达式匹配中文用法示例
Jan 17 Python
django实现登录时候输入密码错误5次锁定用户十分钟
Nov 05 Python
Python实现感知机(PLA)算法
Dec 20 Python
替换python字典中的key值方法
Jul 06 Python
Python中的pathlib.Path为什么不继承str详解
Jun 23 Python
基于Python获取城市近7天天气预报
Nov 26 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
Mar 23 Python
4款Python 类型检查工具,你选择哪个呢?
Oct 30 Python
分享几种python 变量合并方法
Mar 20 Python
python中lambda函数 list comprehension 和 zip函数使用指南
Sep 28 #Python
python之wxPython应用实例
Sep 28 #Python
Python实现从url中提取域名的几种方法
Sep 26 #Python
Python实现的一个简单LRU cache
Sep 26 #Python
python网络编程实例简析
Sep 26 #Python
python的re模块应用实例
Sep 26 #Python
python实现自动登录人人网并访问最近来访者实例
Sep 26 #Python
You might like
破解图片防盗链的代码(asp/php)测试通过
2010/07/02 PHP
Laravel 5框架学习之数据库迁移(Migrations)
2015/04/08 PHP
php微信公众平台开发(四)回复功能开发
2016/12/06 PHP
JavaScript DOM学习第四章 getElementByTagNames
2010/02/19 Javascript
VBS通过WMI监视注册表变动的代码
2011/10/27 Javascript
2014 HTML5/CSS3热门动画特效TOP10
2014/12/07 Javascript
javascript编写贪吃蛇游戏
2015/07/07 Javascript
Javascript打印局部页面实例
2016/06/21 Javascript
JQuery学习总结【二】
2016/12/01 Javascript
jQuery插件HighCharts绘制2D带有Legend的饼图效果示例【附demo源码下载】
2017/03/10 Javascript
vue.js的computed,filter,get,set的用法及区别详解
2018/03/08 Javascript
Webpack path与publicPath的区别详解
2018/05/03 Javascript
深入理解Vue router的部分高级用法
2018/08/15 Javascript
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
2018/08/24 Javascript
如何通过setTimeout理解JS运行机制详解
2019/03/23 Javascript
微信小程序按钮点击动画效果的实现
2019/09/04 Javascript
转换layUI的数据表格中的日期格式方法
2019/09/19 Javascript
[57:18]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#3VP VS VG
2016/03/03 DOTA
Python语言生成水仙花数代码示例
2017/12/18 Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
2018/04/27 Python
Python魔法方法功能与用法简介
2019/04/04 Python
如何通过python的fabric包完成代码上传部署
2019/07/29 Python
基于python框架Scrapy爬取自己的博客内容过程详解
2019/08/05 Python
windows中安装Python3.8.0的实现方法
2019/11/19 Python
Python使用jpype模块调用jar包过程解析
2020/07/29 Python
Python3实现英文字母转换哥特式字体实例代码
2020/09/01 Python
windows+vscode安装paddleOCR运行环境的步骤
2020/11/11 Python
俄罗斯的精英皮具:Wittchen
2018/01/29 全球购物
司机的工作范围及职责
2013/11/13 职场文书
商务日语毕业生自荐信范文
2013/11/14 职场文书
总务岗位职责
2013/11/19 职场文书
2013的个人自我评价
2013/12/26 职场文书
工伤事故处理协议书怎么写
2014/10/15 职场文书
网站文案策划岗位职责
2015/04/14 职场文书
2015年“世界无车日”活动方案
2015/05/06 职场文书
Python中的turtle画箭头,矩形,五角星
2022/03/16 Python