wxPythonにてメニューバーを弄ってみたい坊っちゃま
参考URL:wxPythonチュートリアル
まあ基本的にこのチュートリアルが大変素晴らしいものなので、こんなとこを参照するよりはよほど情報量が多いことでしょう。
さて、こっちは本題へと移ります。
実際に様々な情報を糧に、色々と試してみた結果ということで、今回のメモ。
動作検証環境:BSD
今回は、以下の内容の検証に的を絞りました。
- 第一に、メニューバーのカスタマイズの方法。
- メニューバーに登録したイベントのショートカットキーの登録法。
- メニューの作り方と、その登録法。
ソースコード:
早速、ソースコードから。
#!/usr/bin/env python #coding: utf-8 import wx class TestFrame(wx.Frame): def __init__(self,parent,id,title): wx.Frame.__init__(self,parent,title=title,size=(320,240)) # Setting up the menu on menubar. FileMenu = wx.Menu() # It is easy technique + alpha. menuAbout = FileMenu.Append(wx.ID_ABOUT,"&About\tCtrl+A"," Informations") # "wx.MenuItem" are made by oneself. menuItemMsg = wx.Menu() menuItemMsg = wx.MenuItem(FileMenu, 1, '&Message\tCtrl+M') menuItemMsg.SetBitmap(wx.Bitmap('fox.png')) FileMenu.AppendItem(menuItemMsg) # It is easily technique. menuExit = FileMenu.Append(wx.ID_EXIT,"E&xit"," Exit program") # Creating menu bar. MenuBar = wx.MenuBar() MenuBar.Append(FileMenu,"&File") self.SetMenuBar(MenuBar) # Set Events. self.Bind(wx.EVT_MENU,self.OnAbout,menuAbout) self.Bind(wx.EVT_MENU,self.OnMsg,menuItemMsg) self.Bind(wx.EVT_MENU,self.OnExit,menuExit) # Show window. self.Show(True) def OnAbout(self,e): # create message dialog. dlg=wx.MessageDialog(self,"This is the test code.","Dialog Title.",wx.OK) # Show dialog. dlg.ShowModal() # Finally destroy it when finished. dlg.Destroy() # Copy from onAbout(). def OnMsg(self,e): # create message dialog. dlg=wx.MessageDialog(self,"This is the test code.","Dialog Title.",wx.OK) # Show dialog. dlg.ShowModal() # Finally destroy it when finished. dlg.Destroy() def OnExit(self,e): # Exit the frame. self.Close(True) class MyApp(wx.App): def OnInit(self): frame=TestFrame(None,wx.ID_ANY,"Menubar Test") self.SetTopWindow(frame) return True app=MyApp(0) app.MainLoop()
簡易メモ:
ええと、詳細は偉い人たちに丸投げするとして、簡便に、簡潔に、まとめて置こうと思います。
まず、これを実行すると、メニューバーに「File」ボタンが1つあるだけのウィンドウが生成されます。
この「File」ボタンをクリックすると、「About」、「Message」、「Exit」の3つのメニューが展開されます。この関係をツリー構造で表すと、
[File] |---[About] |---[Message] ----[Exit]
こんな感じです。