我有这个:
以下是一些创建上述图片的代码:
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
如何将位图添加到按钮?
答案 0 :(得分:1)
您可以使用wx.lib.buttons
库,但按钮可能有点简单
但是,正如@RobinDunn指出的那样,他应该知道,自版本2.9.1以来,wx.Button支持显示文本和图像(目前仅在使用wxMSW,wxGTK或OSX / Cocoa端口时)。
在Linux上,我必须确保在desktop settings
中设置Show Icons on Buttons
或仅使用wx.Button
设置第二种方法并不显示图像。
使用第二种方法,按钮看起来更好,失去了平坦的外观。
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()
答案 1 :(得分:1)
wx.Button
支持在标签上添加一个位图一段时间,虽然在GTK版本中我认为它还取决于全局首选项是否显示图标,也可能在活动主题上。有关示例,请参阅演示中的Button示例。
https://github.com/wxWidgets/Phoenix/blob/master/demo/Button.py#L28