Sie können die wx.lib.buttons
Bibliothek verwenden, obwohl die Schaltflächen ein wenig einfach sein können.
Allerdings, wie @RobinDunn darauf hinweist, und er sollte wissen, Seit Version 2.9.1 wx.Button unterstützt, zeigt sowohl Text und ein Bild (derzeit nur bei Verwendung von WXMSW, WXGTK oder OSX/Cocoa-Ports).
Unter Linux musste ich sicherstellen, dass in desktop settings
ich Show Icons on Buttons
eingestellt hatte oder die 2. Methode mit nur wx.Button
das Bild nicht angezeigt wurde.
Mit der zweiten Methode sieht die Schaltfläche viel schöner aus und verliert das flache Aussehen.
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()
Ja, und Sie können auch festlegen, auf welcher Seite des Etiketts die Bitmap platziert werden soll. – RobinDunn