2017-08-16 2 views
0

Ich habe dies:ein Bild auf eine Schaltfläche Hinzufügen

GUI

Hier einige Code, der das obige Bild erstellt:

hbox = wx.BoxSizer(wx.HORIZONTAL) 
_img = wx.StaticBitmap() 
_img.Create(parent, label=wx.Bitmap(os.path.join(
    os.path.dirname(__file__), 'images', 'exit-to-app.svg'))) 
hbox.Add(_img, proportion=1, flag=wx.ALIGN_CENTER | wx.ALL) 
_exit = wx.Button(parent, label="Exit") 
_exit.SetBackgroundColour('#5968c3') 
self.Bind(wx.EVT_BUTTON, self.OnQuit, _exit) 
hbox.Add(_exit, proportion=1, flag=wx.ALIGN_CENTER | wx.ALL) 
return hbox 

Wie die Bitmap auf die Schaltfläche hinzufügen?

Antwort

1

wx.Button unterstützt hat jetzt eine Zeit lang ein Bitmap auf das Etikett hinzufügen, obwohl auf GTK aufbauen Ich denke, es hängt auch von einem globalen Präferenz, ob das Symbol angezeigt werden oder nicht, und wahrscheinlich auch auf dem aktiven Thema. Ein Beispiel finden Sie in der Demo im Beispiel Button.

https://github.com/wxWidgets/Phoenix/blob/master/demo/Button.py#L28

+0

Ja, und Sie können auch festlegen, auf welcher Seite des Etiketts die Bitmap platziert werden soll. – RobinDunn

1

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() 

enter image description here

+1

Robins neue Methode zur Antwort hinzugefügt. Danke Robin! –

Verwandte Themen