2017-08-16 233 views
0

我有這樣的:添加圖像到按鈕

GUI

下面是一些代碼,創建了上圖:

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 

如何將位圖添加到按鈕?

回答

1

您可以使用wx.lib.buttons庫,儘管按鈕可能有點簡單。
然而,@RobinDunn指出,他應該知道,從版本2.9.1開始,wx.Button支持同時顯示文本和圖像(當前僅在使用wxMSW,wxGTK或OSX/Cocoa端口時)。

在Linux上,我必須確保我desktop settings已成立Show Icons on Buttons或僅使用wx.Button不顯示圖像的第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() 

enter image description here

+1

新增羅賓斯新的方法來回答。謝謝羅賓! –