菜单工具栏wxPython菜单与工具栏基础示例
这两天一直在学习菜单工具栏之类的问题,上午正好有机会和大家讨论一下.
1.基本的api介绍
Package wx :: Class Menu
Type Menu
Method Summary
Menu __init__(self, title, style)
__repr__(self)
MenuItem Append(self, id, text, help, kind)
MenuItem AppendCheckItem(self, id, text, help)
MenuItem AppendItem(self, item)
MenuItem AppendMenu(self, id, text, submenu, help) Package wx :: Class MenuBar
Type MenuBar
Window __init__(self, parent, id, pos, size, style, name)
Construct and show a generic Window.
__repr__(self)
bool Append(self, menu, title)
Attach(self, frame)
Check(self, id, check)
Detach(self)
bool Enable(self, enable)
Enable or disable the window for user input.
EnableTop(self, pos, enable) Package wx :: Class EvtHandler
Type EvtHandler
EvtHandler __init__(self)
__repr__(self)
AddPendingEvent(self, event)
Bind(self, event, handler, source, id, id2)
2.简单菜单
在我们的第一个例子中,我们将创立一个menubar,一个文件菜单。菜单将只有一个菜单项。通过选择项应用程序退出。
示例代码如下:
import wx
class Example(wx.Frame):
def __init__(self,*args,**kw):
wx.Frame.__init__(self,None) def InitUI(self):
menuBar = wx.MenuBar()
filemenu = wx.Menu() fitem = filemenu.Append(001,"exit","Quit Applications")
fitem1 = filemenu.Append(002,"002","Quit Applications") menuBar.Append(filemenu,"&File")
self.SetMenuBar(menuBar) self.Bind(wx.EVT_MENU, self.OnQuit, fitem) self.SetSize((400,250))
self.SetTitle("SimpleMenu") self.Center()
self.Show()
def OnQuit(self,e):
self.Close() def main():
app = wx.App()
exa = Example(None)
exa.InitUI()
app.MainLoop()
if __name__ == '__main__':
main()
这是一个以最小的菜单功能小例子。
menubar = wx.MenuBar()首先我们创立一个menubar对象。
fileMenu = wx.Menu()接下来,我们创立一个菜单对象。
fitem = fileMenu.Append(wx.ID_EXIT, 'Quit', 'Quit application')
我们追加到菜单项的菜单对象。第一个参数是菜单项的ID。标准ID会自动添加一个图标和快捷(在windows上没有出现图标,也不能用快捷键)。 CTRL + Q在我们的例子。第二个参数是菜单项的名称。最后一个参数定义状态栏上显示的菜单项被选中时,简短的帮助字符串。在这里,我们没有创造出wx.MenuItem明确。它是幕后的append()方法创立。该方法返回创立的菜单项。此参考将使用后绑定事件。
self.Bind(wx.EVT_MENU, self.OnQuit, fitem)
我们绑定菜单项wx.EVT_MENU的的的定制OnQuit()方法。这类方法将关闭应用程序。
menubar.Append(fileMenu, '&File')
self.SetMenuBar(menubar)
之后,我们追加到菜单栏菜单。 &字符创立一个快捷键。后面的字符下划线。这类方法是通过按Alt + F快捷拜访菜单(windows上似乎不能用)。最后,我们呐喊的SetMenuBar()方法。这类方法属于wx.Frame的部件。它设置的菜单栏。
运行示例图
3.快捷键与图标
在这个例子中,会手动的创立一个快捷键与图标,如下图所示:
示例代码如下:
import wx APP_EXIT = 1 class Example(wx.Frame):
def __init__(self,*args,**kw):
wx.Frame.__init__(self,None) def InitUI(self):
menuBar = wx.MenuBar()
filemenu = wx.Menu() qmi = wx.MenuItem(filemenu,APP_EXIT,"&Quit\tCtrl+Q")
bitm = wx.Bitmap("my.png")
bitm.SetSize(size=(20,20))
qmi.SetBitmap(bitm)
filemenu.AppendItem(qmi) self.Bind(wx.EVT_MENU, self.OnQuit, id=APP_EXIT) menuBar.Append(filemenu, '&File')
self.SetMenuBar(menuBar) self.SetSize((250, 200))
self.SetTitle('Icons and shortcuts')
self.Centre()
self.Show(True)
def OnQuit(self, e):
self.Close() def main():
app = wx.App()
exa = Example(None)
exa.InitUI()
app.MainLoop()
if __name__ == '__main__':
main()
4.子菜单和离开符
每个菜单,也可以有一个子菜单。这样我们就可以把成组类似的命令。例如,我们可以将像个人栏,地址栏,状态栏或导航栏,将工具栏子菜单隐藏/显示各种工具栏的命令。在菜单中,我们可以逗号离开一个离开的命令。这是一个简单的线条。常见的做法是单独的命令,如新建,打开,保存,如打印,打印预览命令与一个单一的分离。在我们的例子中,我们将看到,我们如何可以创立子菜单和菜单离开
示例图如下:
示例代码:
import wx
class Example(wx.Frame):
def __init__(self,*args,**kw):
wx.Frame.__init__(self,None) def InitUI(self):
menuBar = wx.MenuBar() fileMenu = wx.Menu()
fileMenu.Append(wx.ID_NEW,"&New")
fileMenu.Append(wx.ID_OPEN, '&Open')
fileMenu.Append(wx.ID_SAVE, '&Save')
fileMenu.AppendSeparator() imp = wx.Menu()
imp.Append(wx.ID_ANY, 'Import newsfeed list...')
imp.Append(wx.ID_ANY, 'Import bookmarks...')
imp.Append(wx.ID_ANY, 'Import mail...') qmi = wx.MenuItem(fileMenu, wx.ID_EXIT, '&Quit\tCtrl+W')
fileMenu.AppendMenu(wx.ID_ANY, 'I&mport', imp)
fileMenu.AppendItem(qmi) menuBar.Append(fileMenu, '&File') self.SetMenuBar(menuBar) self.Bind(wx.EVT_MENU, self.OnQuit, qmi) self.SetSize((400,250))
self.SetTitle("SimpleMenu")
#self.Centre()
self.Center()
self.Show()
def OnQuit(self,e):
self.Close() def main():
app = wx.App()
ex = Example(None)
ex.InitUI()
app.MainLoop()
if __name__ == '__main__':
main()
那蝴蝶花依然花开花落,而我心中的蝴蝶早已化作雄鹰飞向了广阔的蓝天。
5.复选菜单Check menu item
There are tree kinds of menu items. 它们有三种
normal item
check item
radio item
在接下来的例子中,我们将演示如何检查菜单项。一个检查菜单项是视觉上表现为一个滴答在菜单。
效果图示:
示例代码:
import wx class Example(wx.Frame):
def __init__(self,*args,**kw):
wx.Frame.__init__(self,None);
def InitUI(self):
menuBar = wx.MenuBar()
filemenu = wx.Menu()
viewmenu = wx.Menu() self.shst = viewmenu.Append(wx.ID_ANY,"ShowStatubar","ShowStatubar",kind=wx.ITEM_CHECK)
self.shtl = viewmenu.Append(wx.ID_ANY,"ShowToolBar","ShowToolBar",kind=wx.ITEM_CHECK) viewmenu.Check(self.shst.GetId(),True)
viewmenu.Check(self.shtl.GetId(),True) self.Bind(wx.EVT_MENU, self.ToggleStatuBar, self.shst)
self.Bind(wx.EVT_MENU, self.ToggleToolBar, self.shtl) menuBar.Append(filemenu, '&File')
menuBar.Append(viewmenu, '&View')
self.SetMenuBar(menuBar) self.toolbar = self.CreateToolBar()
bitm = wx.Bitmap("my.png")
bitm.SetSize(size=(20,20))
self.toolbar.AddLabelTool(1,'',bitm)
self.toolbar.Realize() self.statusbar = self.CreateStatusBar()
self.statusbar.SetStatusText('Ready') self.SetSize((350, 250))
self.SetTitle('Check menu item')
self.Centre()
self.Show(True) def ToggleStatuBar(self,e):
if self.shst.IsChecked():
self.statusbar.Show()
else:
self.statusbar.Hide()
def ToggleToolBar(self, e): if self.shtl.IsChecked():
self.toolbar.Show()
else:
self.toolbar.Hide() def main():
app = wx.App()
exa = Example(None)
exa.InitUI()
app.MainLoop()
if __name__ == '__main__':
main()
6.右键菜单Context menu
上下文菜单在某些情况下出现的命令的列表。例如,在Firefox网页浏览器,当我们在网页上右击,我们失掉一个上下文菜单。在这里,我们可以从新载入页面,回去或查看页面的源代码。如果我们右键单击工具栏上,我们失掉另一个管理工具栏的上下文菜单。偶然也被称为上下文菜单弹出菜单。
运行效果图:
示例代码:
import wx
class MyPopupMenu(wx.Menu):
def __init__(self,parent):
super(MyPopupMenu,self).__init__()
self.parent = parent mmi = wx.MenuItem(self,wx.NewId(),'MiniSize')
self.AppendItem(mmi)
self.Bind(wx.EVT_MENU, self.OnMinimize, mmi) cmi = wx.MenuItem(self,wx.NewId(),'Close')
self.AppendItem(cmi)
self.Bind(wx.EVT_MENU, self.OnClose, cmi) def OnMinimize(self,e):
self.parent.Iconize()
def OnClose(self,e):
self.parent.Close() class Example(wx.Frame):
def __init__(self,*args,**kw):
wx.Frame.__init__(self,None);
def InitUI(self):
self.Bind(wx.EVT_RIGHT_DOWN, self.OnRightDown) self.SetSize((250, 200))
self.SetTitle('Context menu')
self.Centre()
self.Show(True)
def OnRightDown(self,e):
self.PopupMenu(MyPopupMenu(self),e.GetPosition()) def main():
app = wx.App()
exa = Example(None)
exa.InitUI()
app.MainLoop()
if __name__ == '__main__':
main()
参考:
wxPython中文教程 简单入门加实例
如何从新设置Bitmap的巨细?http://social.msdn.microsoft.com/Forums/pt-BR/ce4e0b9e-549f-4fb7-a107-a1c3a37839dc/bitmap
文章结束给大家分享下程序员的一些笑话语录:
一条狗在街上闲逛,看见橱窗里一张告示:「招聘程序员。会编程,有团队精神,至少精通两种语言。均等机会。」
那条狗就进去申请,但是被拒绝了。
「我不能雇一条狗在公司里做事。」经理说。
狗不服气,指着告示上「均等机会」几字抗议。
经理没法,叹了口气,不屑地问道:「你会编程吗?」
那条狗默默地走到电脑前,编了个程序,运作准确。
「你有团队精神吗?」经理问。
那条狗掉头看了看门外,一大群野狗在外面虎视耽耽。
「我真的不能雇狗做这份工作。」经理气急败坏地说。
「就算会编程、有团队精神,但是我需要的雇员至少要能精通两种语言。」
那条狗抬头看着经理说:「喵-噢。」
---------------------------------
原创文章 By
菜单和工具栏
---------------------------------
菜单工具栏wxPython菜单与工具栏基础示例的更多相关文章
- “菜单”(menubar)和“工具栏”(toolbars)
"菜单"(menubar)和"工具栏"(toolbars) "菜单" (menubar)和"工具栏"(toolbars) ...
- 『练手』004 Laura.SqlForever如何扩展 导航栏 工具栏 右键菜单 插件
004 Laura.SqlForever如何扩展 导航栏 工具栏 右键菜单 插件 导航栏 插件扩展 比如下图的 窗口 > 关闭所有文档 这个导航栏: 在 任何程序集,任何命名空间,任 ...
- DIY福音:Firefox菜单及右键菜单ID大全
每一个折腾Firefox的Diyer都是上辈子折翼的天使,致自己! 打磨Firefox界面的时候最多的就隐藏一些平常根本用不上的一些菜单,常规的做法就是安装DOM Inspector扩展右键查找大法寻 ...
- Force.com微信开发系列(四)申请Access Token及自定义菜单之创建菜单
在微信接口开发中,许多服务的使用都离不开Access Token,Access Token相当于打开这些服务的钥匙,正常情况下会在7200秒内失效,重复获取将导致上次获取的Token失效,本文将首先介 ...
- Vue2 实现树形菜单(多级菜单)功能模块
结构示意图 ├── index.html ├── main.js ├── router │ └── index.js # 路由配置文件 ├── components # 组件目录 │ ├── App. ...
- VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
上一节讲了标签控件Tab Control以后,常用控件的内容就全部讲完了,当然并没有包括所有控件,主要是一些很常用很重要的控件.本节开始鸡啄米将为大家讲解菜单的概念及使用. 菜单简介 菜单在界面设计中 ...
- GUI菜单——菜单条、菜单、子条目之间关系
菜单:注意区分三个概念:菜单条.菜单.菜单项 将菜单条添加到窗体,菜单条下面包括菜单,菜单下面可以使菜单或者菜单项 菜单项是最后一个.菜单后面有三角标示. 菜单条[文件] 子菜单--子条目 子条目 示 ...
- VS2010-MFC(菜单:VS2010菜单资源详解)
转自:http://www.jizhuomi.com/software/210.html 上一节讲了标签控件Tab Control以后,常用控件的内容就全部讲完了,当然并没有包括所有控件,主要是一些很 ...
- Membership三步曲之入门篇 - Membership基础示例
Membership 三步曲之入门篇 - Membership基础示例 Membership三步曲之入门篇 - Membership基础示例 Membership三步曲之进阶篇 - 深入剖析Pro ...
随机推荐
- android 控制手机的体积的大小 切换音效模式
(1)项目介绍 于android API的AudioManager于,它提供了一种方法来调整电话音量. audioMa.adjustVolume(AudioManager.ADJUST_LOWER, ...
- C# 关闭子线程的方法
将子线程设定为IsBackGroud = true,程序关闭则自动死亡. 暴力手段:System.Environment.Exit(0).关闭时直接x掉所有线程. 子线程自行结束:子线程中自己判断.可 ...
- FPGA 设计怎样进行面积优化(逻辑资源占用量优化)
FPGA面积优化 1 对于速度要求不是非常高的情况下,我们能够把流水线设计成迭代的形式,从而反复利用FPGA功能同样的资源. 2 对于控制逻辑小于共享逻辑时,控制逻辑资源能够用来复用,比如FIR滤波器 ...
- 开源文档管理系统LogicalDOC测试报告---安装篇
开源文档管理系统LogicalDOC测试报告---安装篇 分类: Linux2011-06-22 15:40 7436人阅读 评论(3) 收藏 举报 文档管理测试mysql数据库installerja ...
- 如何用VB获得Windows各类系统目录
现在有很多关于如何用VB获得Windows目 录的文章,但大都只讲到如何获得Windows目录和System目录,有时候我们却需要获得像"我的文档"这样的目录("我的文档 ...
- 藏地传奇js
http://zd.163.com/m/zhenyan/ js很厉害,有很多值得学习的地方,记录下来. http://res.nie.netease.com/zdcq/qt/13/0625_zheny ...
- TodoList开发笔记 – Part Ⅳ
跌跌撞撞总算是把客户端开发好了,后台的代码因为不复杂,就写了些单元测试跑一跑就算通过了,大部分时间都是在调整脚本. 这一节开始部署TodoList项目. 一.了解IIS(Internet Infoma ...
- API变了,客户端怎么办?
使用ASP.NET Web Api构建基于REST风格的服务实战系列教程[九]——API变了,客户端怎么办? 系列导航地址http://www.cnblogs.com/fzrain/p/3490137 ...
- 逻辑回归模型(Logistic Regression, LR)基础
逻辑回归模型(Logistic Regression, LR)基础 逻辑回归(Logistic Regression, LR)模型其实仅在线性回归的基础上,套用了一个逻辑函数,但也就由于这个逻辑函 ...
- copy指定目录下包括子目录中所有的文件
#include <windows.h> #include <iostream> #include <string> using namespace std; DW ...