wx.lib.buttons
ライブラリを使用することができますが、ボタンは少し平らであってもかまいません。
しかし、@RobinDunnが指摘しているように、バージョン2.9.1のwx.Buttonはテキストと画像の両方を表示できるので(現在はwxMSW、wxGTK、またはOSX/Cocoaポートを使用している場合のみ)サポートしています。
Linuxの場合、にShow Icons on Buttons
を設定していたか、またはwx.Button
を使用して2番目の方法で画像が表示されないようにしなければなりませんでした。
2番目の方法を使用すると、ボタンがはっきりと見え、そのフラットな外観が失われます。
import wx
import wx.lib.buttons as buts
class TestFrame(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
pause_button = buts.GenBitmapTextButton(self, -1, bitmap=wx.Bitmap("pause.png"), label= "Pause")
play_button = buts.GenBitmapTextButton(self, -1, bitmap=wx.Bitmap("play.png"), label= "Play")
time_button = wx.Button(self, -1, label= "Time")
time_button.SetBitmap(wx.Bitmap("toggle1.png"),wx.RIGHT)
box = wx.BoxSizer(wx.HORIZONTAL)
box.Add(pause_button, 0, wx.CENTER | wx.ALL,10)
box.Add(play_button, 0, wx.CENTER | wx.ALL,10)
box.Add(time_button, 0, wx.CENTER | wx.ALL,10)
self.SetSizerAndFit(box)
self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
pause_button.Bind(wx.EVT_BUTTON, self.OnPause)
play_button.Bind(wx.EVT_BUTTON, self.OnPlay)
time_button.Bind(wx.EVT_BUTTON, self.OnTime)
self.Show()
def OnCloseWindow(self, event):
self.Destroy()
def OnPause(self, event):
print "Pause pressed"
def OnPlay(self, event):
print "Play pressed"
def OnTime(self, event):
print "Time pressed"
if __name__ == "__main__":
app = wx.App()
frame = TestFrame(None, -1, "wxBitmap Test")
app.MainLoop()
はい、ビットマップが配置されているラベルのどちら側を設定することもできます。 – RobinDunn