ボタンに画像を貼る練習
GUIのボタンを作る場合、いつもボタン上に文字を表示するだけでは味気ないので、絵を表示したボタンを作ることにする。その練習。
いつもながら、wxPython Indexを参考にさせていただく。
今回は以下の節の内容を組み合わせる。
5.3.3 ビットマップボタン(wxBitmapButton)
15.1 wxArtProvider
10.2 ツールチップ
簡単なスクリプトで、実行結果が以下の絵のようになるものがある(昔作ったものの一部)。
これを、
- ボタン上に文字でなく絵を表示する
- ボタンにポインタを置くとツールチップが表れる
ようにする。
以下、ボタンの表示を修正したソースコード。
import wx class MyApp(wx.PySimpleApp): def OnInit(self): width, height = 250, 150 self.Frm = wx.Frame(None, -1, "wxPython", size=wx.Size(width, height)) VSizer = wx.BoxSizer(wx.VERTICAL) self.TxtCtl1 = wx.TextCtrl(self.Frm, -1, "", size=(235,-1), style=wx.TE_RIGHT) #normal button self.Btn = wx.Button(self.Frm, -1, "check") # new button (start) btnBmap = wx.ArtProvider.GetBitmap(wx.ART_FIND) self.Btn = wx.BitmapButton(self.Frm, -1, btnBmap, size=(25,25)) self.Btn.SetToolTip(wx.ToolTip("Check")) # new button (end) self.Btn.Bind(wx.EVT_BUTTON, self.Decision) VSizer.Add(self.TxtCtl1, 0, wx.ALL, 2) VSizer.Add(self.Btn, 0, wx.ALL, 2) self.Frm.SetSizer(VSizer) self.Frm.Show() return True def Decision(self, event): print "pushed !" app = MyApp() app.MainLoop()
ArtProviderの画像を使う代わりに、PNGファイルを貼り付けることもできる。一行変えるだけ。画像の大きさは事前に適当なものにしておく。貼り付けるときに変えようとしてもうまくいかなかった。
import wx class MyApp(wx.PySimpleApp): def OnInit(self): width, height = 250, 150 self.Frm = wx.Frame(None, -1, "wxPython", size=wx.Size(width, height)) VSizer = wx.BoxSizer(wx.VERTICAL) self.TxtCtl1 = wx.TextCtrl(self.Frm, -1, "", size=(235,-1), style=wx.TE_RIGHT) btnBmap = wx.Bitmap('searchfile.png') self.Btn = wx.BitmapButton(self.Frm, -1, btnBmap) self.Btn.SetToolTip(wx.ToolTip("Check")) self.Btn.Bind(wx.EVT_BUTTON, self.Decision) VSizer.Add(self.TxtCtl1, 0, wx.ALL, 2) VSizer.Add(self.Btn, 0, wx.ALL, 2) self.Frm.SetSizer(VSizer) self.Frm.Show() return True def Decision(self, event): print "pushed !" app = MyApp() app.MainLoop()