wxpython菜单栏嵌套窗口_菜单工具栏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()

参考:

文章结束给大家分享下程序员的一些笑话语录:

一条狗在街上闲逛,看见橱窗里一张告示:「招聘程序员。会编程,有团队精神,至少精通两种语言。均等机会。」

那条狗就进去申请,但是被拒绝了。

「我不能雇一条狗在公司里做事。」经理说。

狗不服气,指着告示上「均等机会」几字抗议。

经理没法,叹了口气,不屑地问道:「你会编程吗?」

那条狗默默地走到电脑前,编了个程序,运作准确。

「你有团队精神吗?」经理问。

那条狗掉头看了看门外,一大群野狗在外面虎视耽耽。

「我真的不能雇狗做这份工作。」经理气急败坏地说。

「就算会编程、有团队精神,但是我需要的雇员至少要能精通两种语言。」

那条狗抬头看着经理说:「喵-噢。」

---------------------------------

原创文章 By

菜单和工具栏

---------------------------------

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值