]>
git.saurik.com Git - wxWidgets.git/blob - wxPython/demo/PopupMenu.py
   6 #---------------------------------------------------------------------- 
  10 Right-click on any bare area of this panel (or Ctrl-click on the Mac) 
  11 to show a popup menu.  Then look at the code for this sample.  Notice 
  12 how the PopupMenu method is similar to the ShowModal method of a 
  13 wx.Dialog in that it doesn't return until the popup menu has been 
  14 dismissed.  The event handlers for the popup menu items can either be 
  15 attached to the menu itself, or to the window that invokes PopupMenu. 
  18 #---------------------------------------------------------------------- 
  20 class TestPanel(wx
.Panel
): 
  21     def __init__(self
, parent
, log
): 
  23         wx
.Panel
.__init
__(self
, parent
, -1) 
  24         box 
= wx
.BoxSizer(wx
.VERTICAL
) 
  26         # Make and layout the controls 
  27         fs 
= self
.GetFont().GetPointSize() 
  28         bf 
= wx
.Font(fs
+4, wx
.SWISS
, wx
.NORMAL
, wx
.BOLD
) 
  29         nf 
= wx
.Font(fs
+2, wx
.SWISS
, wx
.NORMAL
, wx
.NORMAL
) 
  31         t 
= wx
.StaticText(self
, -1, "PopupMenu") 
  33         box
.Add(t
, 0, wx
.CENTER|wx
.ALL
, 5) 
  34         self
.Bind(wx
.EVT_RIGHT_UP
, self
.OnRightClick
) 
  37         box
.Add(wx
.StaticLine(self
, -1), 0, wx
.EXPAND
) 
  40         t 
= wx
.StaticText(self
, -1, text
) 
  42         box
.Add(t
, 0, wx
.CENTER|wx
.ALL
, 5) 
  46         self
.Bind(wx
.EVT_RIGHT_UP
, self
.OnRightClick
) 
  49     def OnRightClick(self
, event
): 
  50         self
.log
.WriteText("OnRightClick\n") 
  52         # only do this part the first time so the events are only bound once 
  54         # Yet another anternate way to do IDs. Some prefer them up top to 
  55         # avoid clutter, some prefer them close to the object of interest 
  57         if not hasattr(self
, "popupID1"): 
  58             self
.popupID1 
= wx
.NewId() 
  59             self
.popupID2 
= wx
.NewId() 
  60             self
.popupID3 
= wx
.NewId() 
  61             self
.popupID4 
= wx
.NewId() 
  62             self
.popupID5 
= wx
.NewId() 
  63             self
.popupID6 
= wx
.NewId() 
  64             self
.popupID7 
= wx
.NewId() 
  65             self
.popupID8 
= wx
.NewId() 
  66             self
.popupID9 
= wx
.NewId() 
  68             self
.Bind(wx
.EVT_MENU
, self
.OnPopupOne
, id=self
.popupID1
) 
  69             self
.Bind(wx
.EVT_MENU
, self
.OnPopupTwo
, id=self
.popupID2
) 
  70             self
.Bind(wx
.EVT_MENU
, self
.OnPopupThree
, id=self
.popupID3
) 
  71             self
.Bind(wx
.EVT_MENU
, self
.OnPopupFour
, id=self
.popupID4
) 
  72             self
.Bind(wx
.EVT_MENU
, self
.OnPopupFive
, id=self
.popupID5
) 
  73             self
.Bind(wx
.EVT_MENU
, self
.OnPopupSix
, id=self
.popupID6
) 
  74             self
.Bind(wx
.EVT_MENU
, self
.OnPopupSeven
, id=self
.popupID7
) 
  75             self
.Bind(wx
.EVT_MENU
, self
.OnPopupEight
, id=self
.popupID8
) 
  76             self
.Bind(wx
.EVT_MENU
, self
.OnPopupNine
, id=self
.popupID9
) 
  80         # Show how to put an icon in the menu 
  81         item 
= wx
.MenuItem(menu
, self
.popupID1
,"One") 
  82         item
.SetBitmap(images
.getSmilesBitmap()) 
  84         # add some other items 
  85         menu
.Append(self
.popupID2
, "Two") 
  86         menu
.Append(self
.popupID3
, "Three") 
  87         menu
.Append(self
.popupID4
, "Four") 
  88         menu
.Append(self
.popupID5
, "Five") 
  89         menu
.Append(self
.popupID6
, "Six") 
  92         sm
.Append(self
.popupID8
, "sub item 1") 
  93         sm
.Append(self
.popupID9
, "sub item 1") 
  94         menu
.AppendMenu(self
.popupID7
, "Test Submenu", sm
) 
  97         # Popup the menu.  If an item is selected then its handler 
  98         # will be called before PopupMenu returns. 
  99         self
.PopupMenu(menu
, event
.GetPosition()) 
 103     def OnPopupOne(self
, event
): 
 104         self
.log
.WriteText("Popup one\n") 
 106     def OnPopupTwo(self
, event
): 
 107         self
.log
.WriteText("Popup two\n") 
 109     def OnPopupThree(self
, event
): 
 110         self
.log
.WriteText("Popup three\n") 
 112     def OnPopupFour(self
, event
): 
 113         self
.log
.WriteText("Popup four\n") 
 115     def OnPopupFive(self
, event
): 
 116         self
.log
.WriteText("Popup five\n") 
 118     def OnPopupSix(self
, event
): 
 119         self
.log
.WriteText("Popup six\n") 
 121     def OnPopupSeven(self
, event
): 
 122         self
.log
.WriteText("Popup seven\n") 
 124     def OnPopupEight(self
, event
): 
 125         self
.log
.WriteText("Popup eight\n") 
 127     def OnPopupNine(self
, event
): 
 128         self
.log
.WriteText("Popup nine\n") 
 134 #---------------------------------------------------------------------- 
 136 def runTest(frame
, nb
, log
): 
 137     win 
= TestPanel(nb
, log
) 
 140 #---------------------------------------------------------------------- 
 144 overview 
= """<html><body> 
 145 <h2><center>PopupMenu</center></h2> 
 152 if __name__ 
== '__main__': 
 155     run
.main(['', os
.path
.basename(sys
.argv
[0])] + sys
.argv
[1:])