[Python] wxPython 菜单栏控件学习总结(原创)
1、总结
1、大体创建过程
1、创建一个 菜单栏 : menuBar = wx.MenuBar()
相当于这个白色地方,没有File这个菜单
2、创建 菜单 : fileMenu = wx.Menu()
这两个不是直接“用的”,叫菜单。既用来分类其他 菜单项 的文件夹样
3、创建 菜单项 : newItem = wx.MenuItem()
例如上图的 New Copy Cut Paste Radio_One 等等等等。
这些可以直接“点”的(看作按钮)的叫做 菜单项。
创建的时候需要分配 id (int 整数),到时候菜单事件处理的时候需要通过传递的 id (event.GetId())来判断单击的按钮。
4、将 菜单项 添加到 菜单中 : fileMenu.AppendItem(newItem)
这样当我们单机 File 的时候就会打开这个"文件夹"
并且展示内容,添加多少就展示多少,并且按添加的顺序展示
5、将 菜单 添加到 菜单栏 中 : menuBar.Append(fileMenu, title = "File")
之前我们只是构建了一个上图红框+File菜单 的一个整体对象:fileMenu。
然后我们要把这个 菜单对象 添加到菜单栏中。
6、将该 菜单栏 设置为我们窗口框架的“菜单栏” : self.SetMenuBar(menuBar)
即将之前建立的 菜单栏对象 放到窗口上去。
7、绑定 菜单事件 : self.Bind(wx.EVT_MENT, self.menuHandler)
调用 Bind() 这个绑定事件的函数,因为其他组件 比如按钮 编辑框 都有事件。
所以这里的 wx.EVT_MENT 是表示绑定的是 菜单事件。
menuHandler() 是自定义函数 用来菜单事件。
id = event.GetId() 用来判断单击的 菜单项。
函数参数名称:event 不能变,只能是这个单词。
8、窗口框架的处理 : 与菜单栏无关了
例如 调整大小、出现位置、是否可见
2、各项详解(参考其他)
1、用到的 class :
菜单栏 : wx.MenuBar 类
wx.MenuBar()
wx.MenuBar(n, menus, titles, style)
有一个参数的构造函数,此外还有一个默认的。
参数“n”表示的菜单的数目。Menu是菜单和标题的数组和字符串数组。如果style参数设置为wx.MB_DOCKABLE,菜单栏可以停靠。
菜单 : wx.Menu 类
wx.Menu类对象是一个或多个菜单项,其中一个可被用户选择的下拉列表。
该开始 new 菜单对象的时候 只要 fileMenu = wx.Menu() 即可
之后添加菜单项目的时候,可直接使用 Append() 函数添加,或 wx.MenuItem 类的一个对象被追加。
wx.Menu.Append(id, text, kind)
Item = Wx.MenuItem(parentmenu, id, text, kind)
wx.Menu.Append(Item)
菜单项:wx.MenuItem 类
当我们 new 菜单项对象时 需要填几个参数。
newItem = wx.MenuItem(parentMenu, id, text, kind)
其中 :
parentMenu 为其 菜单的对面,比如上文提到的 newMenu 菜单项的 parentMenu 为 fileMenu
id 为该菜单项的 id 到时候处理 菜单项时间的时候需要用到滴
text 为这个菜单项的名称
kind 为该菜单项的类型
①注册 快捷键的方法 :参数text = "名称/t快捷键"
比如 text = "Quit/tCtrl+Q"
这样就注册了 Ctrl + Q 的快捷键
②其他类型菜单项的方法
菜单项有 3 种:
只需要 参数 kind = 相关类型常量即可
2、感想
期间看了找了挺多资料 : http://www.yiibai.com/wxpython/wxpython_menus.html#
这个里面的很详细,且例子经典。
o.o 要是先看不懂,就敲抄一边会好很多。
关于wxPyton 中菜单栏的运用的,以下代码能够很好的展示相关的操作方法。
3、样例代码
#coding:utf-8
#author:Twobox import wx class Mywin(wx.Frame):
def __init__(self, parent, title):
super(Mywin, self).__init__(parent, title = title)
self.InitUI() def InitUI(self):
#创建一个菜单栏
menuBar = wx.MenuBar() #创建一个菜单 1
fileMenu = wx.Menu() #创建一个菜单项 1-1
newItem = wx.MenuItem(fileMenu, id = wx.ID_NEW, text = 'New', kind = wx.ITEM_NORMAL)
fileMenu.AppendItem(newItem) #添加一行线
fileMenu.AppendSeparator() #创建一个子菜单 1-2
editMenu = wx.Menu() #创建三个子菜单的菜单项目 1-2-1 and 1-2-2 and 1-2-3
cutItem = wx.MenuItem(editMenu, id = 122, text = "Cut", kind = wx.ITEM_NORMAL)
copyItem = wx.MenuItem(editMenu, id = 121, text = "Copy", kind = wx.ITEM_NORMAL)
pasteItem = wx.MenuItem(editMenu, id = 123, text = "Paste", kind = wx.ITEM_NORMAL)
editMenu.AppendItem(copyItem)
editMenu.AppendItem(cutItem)
editMenu.AppendItem(pasteItem) #把子菜单 1-2 添加到菜单 1 中
fileMenu.AppendMenu(wx.ID_ANY, "Edit", editMenu) # 添加一行线
fileMenu.AppendSeparator() #添加两个单选框 1-3 and 1-4
radio1 = wx.MenuItem(fileMenu, id = 13, text = "Radio_One", kind = wx.ITEM_RADIO)
radio2 = wx.MenuItem(fileMenu, id = 14, text = "Radio_Two", kind = wx.ITEM_RADIO)
fileMenu.AppendItem(radio1)
fileMenu.AppendItem(radio2)
#PS.单选框 只在自己区域之间(两行线之间) 相互作用 # 添加一行线
fileMenu.AppendSeparator() #添加一个 可选中 的菜单项 1-5
fileMenu.AppendCheckItem(id = 15, item = "Check") #添加一个 菜单项 1-6 并注册快捷键
quit = wx.MenuItem(fileMenu, id = wx.ID_EXIT, text = "Quit\tCtrl+Q", kind = wx.ITEM_NORMAL)
fileMenu.AppendItem(quit) #将 fileMenu 菜单添加到菜单栏中
menuBar.Append(fileMenu, title = 'File') #设置窗口框架的菜单栏为 menuBar
self.SetMenuBar(menuBar) #绑定事件处理
self.Bind(wx.EVT_MENU, self.menuHandler) #让其在屏幕中间打开调整大小展示
self.SetSize((300,400))
self.Centre()
self.Show() def menuHandler(self, event):
id = event.GetId()
if id == wx.ID_NEW:
print("NEW")
if id == wx.ID_EXIT:
exit(0) if __name__ == "__main__":
ex = wx.App()
Mywin(None, 'Menu - Test')
#Mywin(None, 'Menu - Test') #可以同时打开两个窗口 果然体现面向对象的程序开发思想
ex.MainLoop()
2017-08-20 14:21:26
[Python] wxPython 菜单栏控件学习总结(原创)的更多相关文章
- [Python] wxPython 基本控件 (转)
转自:http://www.cnblogs.com/wangjian8888/p/6028777.html 一.静态文本控件 wx.StaticText(parent, id, label, pos= ...
- [Python] wxPython 编辑框组件学习总结 (原创)
1.总结 1.常用4种 编辑框 的构造 1.普通编辑框 单行输入的简单编辑框 (?为所在框的对象,同下) self.textBox = wx.TextCtrl(parent = ?) 2.密码编辑框 ...
- python之Tkinter控件学习
转载自 http://www.cnblogs.com/kaituorensheng/p/3287652.html#_label0 阅读目录 1. 产品介绍 2. 设计规划 3. 相关知识 4. 源码 ...
- Python Tkinter 基础控件学习
# -*- coding: utf-8 -*- from Tkinter import * def btn_click(): b2['text'] = 'clicked' evalue = e.get ...
- wxPython控件学习之wx.grid.Grid 表格控件
wxPython控件学习之wx.grid.Grid (包括对GridCellEditor和GridCelRender的扩展,以支持更多的grid cell 样式, 以GridCellColorEdit ...
- 转)delphi chrome cef3 控件学习笔记 (二)
(转)delphi chrome cef3 控件学习笔记 (二) https://blog.csdn.net/risesoft2012/article/details/51260832 原创 2016 ...
- IOS学习笔记(四)之UITextField和UITextView控件学习
IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...
- DevExpress控件学习总结(转)
DevExpress控件学习总结 1.Navigation & Layout 1.1 Bar Manager 如果想在窗体或用户控件(user control)上添加工具条(bars)或弹 ...
- Python Tkinter基础控件入门实例
分享一个Python Tkinter基础控件用法的入门例子,包括窗口的显示.显示内置图片.弹出窗口.菜单等. 例子,Python Tkinter基础控件的用法 # -*- coding: utf-8 ...
随机推荐
- tkinter模块常用参数(python3)
1.使用tkinter.Tk() 生成主窗口(root=tkinter.Tk()):root.title('标题名') 修改框体的名字,也可在创建时使用className参数来命名:root.r ...
- Chrome浏览器扩展开发系列之五:Page Action类型的Chrome浏览器扩展
Page Action类型的Google Chrome浏览器扩展程序,通常也会有一个图标,但这个图标位于Chrome浏览器的地址栏内右端.而且这个图标并非始终出现,而是当某指定的页面打开时才会出现.也 ...
- 软考 程序员 下午考题 c语言 笔记
1. 数组名 是表示数组空间首地址的指针常量,程序中不允许对常量赋值. 如 int a[]; a就是数组名,表示数组控件首地址的指针常量 a = 0;是错误的,不允许对指针常量赋值 &a ...
- 我的学习之路_第二十九章_bootstrap
bootstrap 内置了html,css,js插件为一体的前端框架 响应式布局: 设计一套页面就可以使用于很多现实设备 bootstrap: 1.入门(响应式布局的容器) 1.先进入jQuery的j ...
- 搭建SSM项目框架全过程及思考
1.前言 之前都是在现有框架下进行写代码或者总是看一些别人的架构,总会眼高手低.于是打算自己完整的走一遍流程,同时把所遇到的问题,思考的问题记下来,供大家参考.由于是工作年限不高,属于新手,不足之处还 ...
- 在ASP.NET MVC中利用Aspose.cells 将查询出的数据导出为excel,并在浏览器中下载。
正题前的唠叨 本人是才出来工作不久的小白菜一颗,技术很一般,总是会有遇到一些很简单的问题却不知道怎么做,这些问题可能是之前解决过的.发现这个问题,想着提升一下自己的技术水平,将一些学的新的'好'东西记 ...
- hdu_2222: Keywords Search(AC自动机模板题)
题目链接 统计一段字符串中有多少个模板串在里面出现过 #include<bits/stdc++.h> using namespace std; ; struct Trie { ]; int ...
- 途虎养车Tuhu商城系统开发
途虎养车Tuhu商城系统开发,咨询:何经理152-2217-7508(微信同号)途虎养车商城小程序开发,途虎养车商城小程序平台开发,途虎养车商城小程序系统开发. 为什么能做得这么好,里面的门道确实不少 ...
- 登录界面Demo
今天记载一个Demo,这个是我练习项目中用到,供新手看看,界面图:
- xshell常用命令
常用的命令: suse linux 常用命令 (1) 命令ls--列出文件 ls 显示当前目录文件 ls -la 给出当前目录下所有文件的一个长列表,包括以句点开头的"隐藏"文件 ...