实战wxPython:007 您所在的位置:网站首页 应用程序上下文怎么输入 实战wxPython:007

实战wxPython:007

2023-06-04 19:16| 来源: 网络整理| 查看: 265

复选菜单项

菜单项有三种样式:

常规样式(normal item)复选样式(check item)单选样式(radio item)

在下面的例子中,我们将演示复选菜单项。复选菜单项由菜单中的对勾直观表示。

import wx import os   class Example(wx.Frame):     def __init__(self, *args, **kwargs):         super(Example, self).__init__(*args, **kwargs)                  self.SetTitle('实战wxPython: 菜单Check操作')         self.SetSize(400, 300)                  self.InitUi()                  self.Centre()              def InitUi(self):         menubar = wx.MenuBar()         viewMenu  = wx.Menu()                  self.showStatus = viewMenu.Append(wx.ID_ANY, '显示状态条','显示状态条', kind=wx.ITEM_CHECK)         self.showTool = viewMenu.Append(wx.ID_ANY, '显示工具条', '显示工具条', kind=wx.ITEM_CHECK)                  viewMenu.Check(self.showStatus.GetId(), True)         viewMenu.Check(self.showTool.GetId(), True)                  self.Bind(wx.EVT_MENU, self.ToggleStatusBar, self.showStatus)         self.Bind(wx.EVT_MENU, self.ToggleToolBar, self.showTool)                         menubar.Append(viewMenu, '视图(&V)')         self.SetMenuBar(menubar)                  self.toolbar = self.CreateToolBar()         self.toolbar.AddTool(1, '', wx.Bitmap(os.path.dirname(__file__) + '/file_new.png'))         self.toolbar.AddTool(1, '', wx.Bitmap(os.path.dirname(__file__) + '/file_open.png'))         self.toolbar.AddTool(1, '', wx.Bitmap(os.path.dirname(__file__) + '/file_save.png'))         self.toolbar.Realize()                  self.statusbar = self.CreateStatusBar()         self.statusbar.SetStatusText('就绪')              def ToggleStatusBar(self, e):           if self.showStatus.IsChecked():             self.statusbar.Show()         else:             self.statusbar.Hide()       def ToggleToolBar(self, e):           if self.showTool.IsChecked():             self.toolbar.Show()         else:             self.toolbar.Hide()          def main():     app = wx.App()     window = Example(None)     window.Show()     app.MainLoop()      if __name__ == '__main__':     main()

创建一个视图菜单,其中有两个复选菜单项。这两个菜单项将显示和隐藏状态栏和工具栏。

self.showStatus = viewMenu.Append(wx.ID_ANY, '显示状态条','显示状态条', kind=wx.ITEM_CHECK) self.showTool = viewMenu.Append(wx.ID_ANY, '显示工具条', '显示工具条', kind=wx.ITEM_CHECK)

如果要添加复选菜单项,将参数kind设置为wx.ITEM_CHECK即可。kind的默认参数为wx.ITEM_NORMAL。

viewMenu.Check(self.showStatus.GetId(), True) viewMenu.Check(self.showTool.GetId(), True)

当应用程序启动时,工具栏和状态栏都是可见的,因为使用wx.Menu的方法Check()复选上创建的两个菜单项。

def ToggleStatusBar(self, e):     if self.showStatus.IsChecked():         self.statusbar.Show()     else:         self.statusbar.Hide()

根据复选菜单项的状态显示或者隐藏状态栏。使用IsChecked()方法可以获得菜单项是否处于复选状态。工具栏的情况也一样。

示例程序的运行结果如下图所示:

复选菜单项演示

上下文菜单

上下文菜单常常也称作弹出菜单,在一个交互窗口中,上下文菜单就是一组操作命令的列表。例如,在常见的Firefox浏览器中,到我们右键单击网页时,将会弹出一个上下文菜单。在这些菜单项里,我们可重新加载页面,返回或者查看页面源。如果右键单击工具栏,则会弹出另外一个用于管理工具栏的上下文菜单。

import wx   class MyPopupMenu(wx.Menu):     def __init__(self, parent):         super(MyPopupMenu, self).__init__()                  self.parent = parent                  menuItemMin = wx.MenuItem(self, wx.NewId(), '最小化')         self.Append(menuItemMin)         self.Bind(wx.EVT_MENU, self.OnMinimize, menuItemMin)                  menuItemClose = wx.MenuItem(self, wx.NewId(), '关闭')         self.Append(menuItemClose)         self.Bind(wx.EVT_MENU, self.OnClose, menuItemClose)              def OnMinimize(self, e):         self.parent.Iconize()              def OnClose(self, e):         self.parent.Close()   class Example(wx.Frame):     def __init__(self, *args, **kwargs):         super(Example, self).__init__(*args, **kwargs)                  self.SetTitle('实战wxPython: 上下文菜单')         self.SetSize(400, 300)                  self.InitUi()                  self.Centre()              def InitUi(self):         self.Bind(wx.EVT_RIGHT_DOWN, self.OnRightDown)              def OnRightDown(self, e):         self.PopupMenu(MyPopupMenu(self), e.GetPosition())          def main():     app = wx.App()     window = Example(None)     window.Show()     app.MainLoop()      if __name__ == '__main__':     main()

在这个示例中,我们为主窗口创建了一个上下文菜单。它有两个菜单项,一个菜单项执行最小化应用程序,另一个菜单项将终止应用程序。

class MyPopupMenu(wx.Menu):     def __init__(self, parent):         super(MyPopupMenu, self).__init__()

创建一个单独的继承自wx.Menu的MyPopupMenu类。

menuItemMin = wx.MenuItem(self, wx.NewId(), '最小化') self.Append(menuItemMin) self.Bind(wx.EVT_MENU, self.OnMinimize, menuItemMin)

创建一个菜单项,并将其添加到上下文菜单。然后将事件处理程序绑定到此菜单项。

如果右键单击窗口,将触发窗口的wx.EVT_RIGHT_DOWN事件,该事件绑定的方法将调用窗口的onRightDown()方法。

def OnRightDown(self, e):     self.PopupMenu(MyPopupMenu(self), e.GetPosition())

在onRightDown()方法中,调用PopupMenu()方法显示上下文菜单。其中第一个参数为要显示的菜单。第二个参数是上下文菜单出现的位置。上下文菜单出现在鼠标光标点击的位置(调用事件对象的GetPosition()方法获得鼠标的点击位置)。

上下文菜单示例运行结果如下图:

 上下文菜单示例

本文知识点 复选菜单项和单选菜单项。上下文菜单。

前一篇:实战wxPython: 006 - 怎样给一个菜单添加子菜单



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有