wxPython中的菜单

#!/usr/bin/python
#-*- coding:utf8 -*-

import wx
#一个简单的菜单示例
class MenuFrame1(wx.Frame):
    def __init__(self,root):
        wx.Frame.__init__(self, root, -1, u"菜单", size=(300,200))
        panel = wx.Panel(self, -1)
        menuBar= wx.MenuBar()  #添加菜单栏
        
        menu = wx.Menu()
        menuBar.Append(menu, u"文件")
        menu.Append(100,u"消息框") #注册id

        menu.AppendSeparator()
        menu.Append(101, u"退出")
        
        self.Bind(wx.EVT_MENU, self.OnClick, id=100)
        self.Bind(wx.EVT_MENU, self.OnExit, id=101)

        self.SetMenuBar(menuBar)

    def OnClick(self, event):
        wx.MessageBox(u"你好", u"提示")

    def OnExit(self, event):
        self.Close(True)



class MenuFrame2(wx.Frame):
    def __init__(self, root):
        wx.Frame.__init__(self, root, -1, u"菜单示例",size=(300, 200))
        panel = wx.Panel(self, -1)
        menu = wx.Menu()
        subMenu = wx.Menu()
        subMenu.AppendCheckItem(-1, u"菜单1")  #可以多选
        subMenu.AppendRadioItem(-1, u"菜单2")  #单选标记
        menu.AppendMenu(-1, u"子菜单", subMenu)
        
        menuBar = wx.MenuBar()
        menuBar.Append(menu, u"菜单")
        self.SetMenuBar(menuBar)



#简单的弹出式菜单
class MenuFrame3(wx.Frame):
    def __init__(self, root):
        wx.Frame.__init__(self, None, -1, u"弹出式菜单", size=(300,200))
        self.panel = wx.Panel(self)
        self.textCtrl = wx.TextCtrl(self.panel, -1, pos=(20,20))
        menuBar = wx.MenuBar()
        self.SetMenuBar(menuBar)

        self.popupMenu = wx.Menu()
        menuList = [u"菜单1", u"菜单2", u"菜单3"]
        
        self.panel.Bind(wx.EVT_RIGHT_DOWN, self.OnPopup)
        for menu in menuList:
            item = self.popupMenu.Append(-1, menu)
            self.Bind(wx.EVT_MENU, self.OnItemSelect, item)

    def OnPopup(self,event):
        print "test1"
        #pos = self.panel.ClientToScreen(event.GetPosition())
        #print pos
        pos = event.GetPosition()   #获得点击时的坐标
        #print pos
        self.panel.PopupMenu(self.popupMenu, pos)

    def OnItemSelect(self, event):
        print "test2"
        item = self.popupMenu.FindItemById(event.GetId())
        #print item.GetText()
        self.textCtrl.Value = item.GetText()



#快捷键
class MenuFrame4(wx.Frame):
    def __init__(self, root):
        wx.Frame.__init__(self, root, -1, u"菜单快捷键", size=(300,200))
        panel = wx.Panel(self, -1)
        menu = wx.Menu()
        exitMenu = menu.Append(-1, u"&x退出")
        self.Bind(wx.EVT_MENU, self.OnExit, exitMenu)
        menuBar = wx.MenuBar()
        menuBar.Append(menu, u"&m菜单")  #这个快捷键有点问题 指定鼠标焦点
        self.SetMenuBar(menuBar)

    def OnExit(self,event):
        self.Close(True)

        
#位图菜单
class MenuFrame5(wx.Frame):
    def __init__(self, root):
        wx.Frame.__init__(self, root, -1, u"位图菜单", size=(300,200))
        panel = wx.Panel(self, -1)
        menu = wx.Menu()
        img = wx.Bitmap("../day20/previous.png",wx.BITMAP_TYPE_PNG)
        previousItem = wx.MenuItem(menu, -1, u"前进")
        previousItem.SetBitmap(img)
        menu.AppendItem(previousItem)

        img1 = wx.Bitmap("next.png")#在统一文件夹 下却不能显示图标? 搞不懂。。。。
        #print img1
        nextItem = wx.MenuItem(menu, -1, u"后退")
        nextItem.SetBitmap(img1)
        menu.AppendItem(nextItem)

        menuBar = wx.MenuBar()
        menuBar.Append(menu, u"菜单")
        self.SetMenuBar(menuBar)



class MyApp(wx.App):
    def OnInit(self):
        #self.frame = MenuFrame1(None)
        #self.frame = MenuFrame2(None)
        #self.frame = MenuFrame3(None)
        #self.frame = MenuFrame4(None)
        self.frame = MenuFrame5(None)
        self.frame.Show()
        return True

app = MyApp()
app.MainLoop()
        
QQ交流群: 204944806
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值