2017-08-16 155 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

新增罗宾斯新的方法来回答。谢谢罗宾! –