マウスの右クリックでメニューを表示させる方法
GUIの画面上で、マウスの右ボタンをクリックしてメニューを表示させる方法を検討する。「wxPythonデモ」のListCtrl.pyを参照した。
下のコードでは、マウスの右ボタンを押して離したとき(wx.EVT_RIGHT_UP)に、ポップアップメニューを表示するようにしている。
#!/bin/env python import wx class MyApp(wx.PySimpleApp): def OnInit(self): self.frm = wx.Frame(None, -1, 'Title', size=(300,200)) self.p = p = wx.Panel(self.frm, -1) self.p.Bind(wx.EVT_COMMAND_RIGHT_CLICK, self.OnRightUp) # for wxMSW self.p.Bind(wx.EVT_RIGHT_UP, self.OnRightUp) # for wxGTK self.frm.Show() return True def OnRightUp(self, event): if not hasattr(self, "popupID1"): # 起動後、一度だけ定義する。 self.popupID1 = wx.NewId() self.popupID2 = wx.NewId() self.Bind(wx.EVT_MENU, self.OnPopupOne, id=self.popupID1) self.Bind(wx.EVT_MENU, self.OnPopupTwo, id=self.popupID2) menu = wx.Menu() menu.Append(self.popupID1, "Do something") menu.Append(self.popupID2, "Quit") self.p.PopupMenu(menu) menu.Destroy() def OnPopupOne(self, event): print 'Do something' def OnPopupTwo(self, event): print 'Application will quit.' self.frm.Close() app = MyApp() app.MainLoop()