• 菜单工具栏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	Ctrl+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	Ctrl+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中文教程 简单入门加实例

        wxPython菜单与工具栏

        如何从新设置Bitmap的巨细?http://social.msdn.microsoft.com/Forums/pt-BR/ce4e0b9e-549f-4fb7-a107-a1c3a37839dc/bitmap

        

        

    文章结束给大家分享下程序员的一些笑话语录: 一条狗在街上闲逛,看见橱窗里一张告示:「招聘程序员。会编程,有团队精神,至少精通两种语言。均等机会。」
      那条狗就进去申请,但是被拒绝了。
      「我不能雇一条狗在公司里做事。」经理说。
      狗不服气,指着告示上「均等机会」几字抗议。
      经理没法,叹了口气,不屑地问道:「你会编程吗?」
      那条狗默默地走到电脑前,编了个程序,运作准确。
      「你有团队精神吗?」经理问。
      那条狗掉头看了看门外,一大群野狗在外面虎视耽耽。
      「我真的不能雇狗做这份工作。」经理气急败坏地说。
      「就算会编程、有团队精神,但是我需要的雇员至少要能精通两种语言。」
      那条狗抬头看着经理说:「喵-噢。」

    --------------------------------- 原创文章 By
    菜单和工具栏
    ---------------------------------

  • 相关阅读:
    广度优先搜索
    洛谷 P1126 机器人搬重物
    codevs 1058 合唱队形
    洛谷P1216 [USACO1.5]数字三角形 Number Triangles
    Codevs 1576 最长严格上升子序列
    跳马(Knight Moves), ZOJ1091, POJ2243
    洛谷 P1644 跳马问题
    NOI 2971 抓住那头牛
    NOI 2727 仙岛求药
    搜索与回溯算法
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3153273.html
Copyright © 2020-2023  润新知