python之wxPython菜单使用详解

本文实例讲述了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()

运行效果如下图所示:

这里再来解释下几个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程序设计有所帮助。

时间: 2014-09-26

Python模拟三级菜单效果

本文实例为大家分享了Python模拟三级菜单效果的具体代码,供大家参考,具体内容如下 1.功能简介 此程序模拟多级菜单操作,实现按菜单项对应数字索引进入下级菜单,按b键回退到上一级菜单,按q键退出菜单.并用一个简化的学科专业目录进行了三级菜单测试,实际上此程序可适用任意多级菜单操作. 2.实现方法 本程序采用python语言编写,为了高效实现菜单操作,减少循环次数,关键定义了如下三个变量: current_menu_dict:非最低级菜单时为一个嵌套字典,在最低级菜单时为一个列表,存放当前级及后

使用python实现省市三级菜单效果

地区分三层结构例如: 大中华地区一级划分: 华东 华中 华北 西南 特别行政区 华南 ------------------------------------------------- 请输入你要查看的大中华地区名字:华中 ------------------包含的省名字二级:----------------- 湖北 湖南 河南 ------------------------------------------------- 请输入你要查看的省名字:湖北 --------------包含的城市

python递归查询菜单并转换成json实例

最近需要用python写一个菜单,折腾了两三天才搞定,现在记录在此,需要的朋友可以借鉴一下. 备注:文章引用非可执行完整代码,仅仅摘录了关键部分的代码 环境 数据库:mysql python:3.6 表结构 CREATE TABLE `tb_menu` ( `id` varchar(32) NOT NULL COMMENT '唯一标识', `menu_name` varchar(40) DEFAULT NULL COMMENT '菜单名称', `menu_url` varchar(100) DE

Python实现微信公众平台自定义菜单实例

首先先获取access_token,并保存与全局之中 def token(requset): url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s' % ( Config.AppID, Config.AppSecret) result = urllib2.urlopen(url).read() Config.access_token = json.load

Python字典实现简单的三级菜单(实例讲解)

如下所示: data = { "北京":{ "昌平":{"沙河":["oldboy","test"],"天通苑":["链接地产","我爱我家"]}, "朝阳":{"望京":["奔驰","陌陌"],"国贸":["CICC",&quo

python 创建弹出式菜单的实现代码

python 创建弹出式菜单的实现代码            实现效果图: Python代码  import win32ui import win32api from win32con import * from pywin.mfc import window class MyWnd(window.Wnd): def __init__ (self): window.Wnd.__init__(self,win32ui.CreateWnd()) self._obj_.CreateWindowEx(W

Python自动化开发学习之三级菜单制作

本文实例为大家分享了Python三级菜单展示的具体代码,供大家参考,具体内容如下 作业需求: (1)运行程序输出第一级菜单 (2)选择一级菜单某项,输出二级菜单,同理输出三级菜单 (3)让用户选择是否要退出 (4)有返回上一级菜单的功能 data = { "天津":{ "南开区":{ "南开大学":{ "历史系":{}, "文学系":{}, "英语系":{}, }, "科技大学

python实现应用程序在右键菜单中添加打开方式功能

最近项目组开发的一个小工具想要在右键菜单中添加打开方式,以有道云笔记为例进行了需求拆解和代码编写 1.需求拆解: 如何实现手动添加右键菜单的打开方式: Step1:打开注册表编辑器,Win+R->输入 "regedit" Step2:在HKEY_CLASSES_ROOT/*/shell (或者HKEY_LOCAL_MACHINE/SOFTWARE/Classes/*/shell ,两个目录是一样的) 添加一个key:YNote,然后在该项中新建项command,然后再编辑字符串,

右键菜单中添加打开MS-DOS的批处理bat

reg add "HKCR\*\shell\ms-dos" /ve /d ms-dos /f reg add "HKCR\*\shell\ms-dos\command"  /ve /d "cmd.exe /k cd %%1"  /f reg add "HKCR\Folder\shell\ms-dos" /ve /d ms-dos /f reg add "HKCR\Folder\shell\ms-dos\command

vbs实现右键菜单中添加CMD HERE

右键菜单中添加CMD HERE 复制代码 代码如下: Set WshShell=CreateObject("Wscript.Shell")  WshShell.RegWrite "HKEY_LOCAL_MACHINE\Software\CLASSES\Folder\shell\cmd here\",""  WshShell.RegWrite "HKEY_LOCAL_MACHINE\Software\CLASSES\Folder\shel

在文件夹右键菜单中添加“进入DOS”命令的方法

那么就在文件夹右键菜单中增加一个"进入DOS"的快捷选项吧. 点击后直接进入DOS下该文件夹目录 操作方法: 方案A: 1.打开注册表(regedit) 2.找到下面的路径 HKEY_CLASSES_ROOT\Folder\shell 3.新建 项:  CmdPrompt  并设置默认值: "进入DOS" (不带引号,显示到右键菜单上的文字,可任意改变) 4.在CmdPrompt下新建项 Command 并设置默认值:"cmd.exe /k cd %l &

python编程之requests在网络请求中添加cookies参数方法详解

哎,好久没有学习爬虫了,现在想要重新拾起来.发现之前学习爬虫有些粗糙,竟然连requests中添加cookies都没有掌握,惭愧.废话不宜多,直接上内容. 我们平时使用requests获取网络内容很简单,几行代码搞定了,例如: import requests res=requests.get("https://cloud.flyme.cn/browser/index.jsp") print res.content 你没有看错,真的只有三行代码.但是简单归简单,问题还是不少的. 首先,这

python实现的批量分析xml标签中各个类别个数功能示例

本文实例讲述了python实现的批量分析xml标签中各个类别个数功能.分享给大家供大家参考,具体如下: 文章目录 需要个脚本分析下各个目标的数目 顺带练习下多进程,自用,直接上代码: # -*- coding: utf-8 -*- # @Time : 2019/06/10 18:56 # @Author : TuanZhangSama import os import xml.etree.ElementTree as ET from multiprocessing import Pool,fre

Android标题栏中添加返回按钮功能

标题栏中的返回按钮在实际使用中用的比较多,今天就来讲讲我在项目开发中的使用经历,话不多说,还是直接上源码,上源码是最给力的. 一. 编写自定义类 public class CustomTitle { private static Activity mActivity; public static void getCustomTitle(Activity activity, String title) { mActivity = activity; mActivity.requestWindowF

js捕获鼠标右键菜单中的粘帖事件实现代码

比如点击菜单中的"粘帖"后事件如何捕获  问题解决了! 用的jQuery中的paste事件,这里需要注意,如想获得粘帖文本要使用setTimeout控制下时间. 复制代码 代码如下: $("#input").bind('paste', function(e) { var el = $(this); setTimeout(function() { var text = $(el).val(); alert(text); }, 100); }); 貌似是在1.4版后加上

Swift如何在应用中添加图标更换功能的方法

接之前关于主题的分享,主题满足了用户界面自定义的需求.但是,当应用图标一直为默认的样子时,这一切显得并不那么完美.比如OneDay的主题拥有10种配色,而默认的图标仅仅只有绿白搭配. iOS在10.3之后,增加了动态更换图标的功能,允许在应用中提前内置图标素材,在特定的用户操作或应用定时函数进行替换应用图标.可能的应用场景,比如电商APP提前内置节日的图标.时钟类APP内置时间图标. 实现应用图标功能并不困难,通过三个步骤就可搞定: 1.设置图标信息 2.添加图标文件 3.调用更换函数 一.在i

在博客园博文中添加自定义右键菜单的方法详解

页面设计 首先将这三个功能以一个列表<ul>的形式放置.鼠标移入时样式改变,移出时还原 <style> body{margin: 0;} ul{ margin: 0; padding: 0; list-style: none; } .list{ width: 100px; text-align: center; cursor: pointer; font:20px/40px '宋体'; background-color: #eee; } .in:hover{ background-