Как сделать растровую кнопку wxpython только с изображением без лишних пикселей и границ вокруг изображения
Я пытаюсь использовать изображение в качестве кнопки в wxpython. То, что я хочу, это то, что должен быть только растровое изображение и никакая другая граница или какой-либо дополнительный пиксель вокруг кнопки. Я действительно хотел бы только захватить щелчок на растровом изображении, поэтому, возможно, мне не нужна настоящая кнопка. Следовательно, нажатие кнопки не требуется.
Один вариант, который я использую PlateButton с platebutton.PB_STYLE_NOBG, который отлично работает только тогда, когда он отображает изображение без наведения мыши или щелчков. Теперь, когда я наведу на кнопку кнопку, мне нужно затененное изображение того же изображения (только изображение без рамки или чего-либо еще), но я получаю квадратную рамку вокруг моего изображения.
Мой код:
import wx.lib.platebtn as platebutton
imageButton = platebutton.PlateButton(self._ribbon,wx.ID_NEW, bmp = wx.Bitmap("image.png", wx.BITMAP_TYPE_ANY), pos = (0,0), size = (37,17), style= platebutton.PB_STYLE_DEFAULT | platebutton.PB_STYLE_NOBG)
2 ответа
Вы можете напрямую использовать статическое растровое изображение и захватывать событие мыши в этом растровом изображении.
попробуй это:
sBitMap = wx.StaticBitmap(self._ribbon, -1, wx.Bitmap("image.png", wx.BITMAP_TYPE_ANY), (0, 0), (37,17))
sBitMap.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)
def OnLeftDown(self, e):
print "OnLeftDown"
Редактировать:
Получить размер из исходного изображения и использовать его для создания статического растрового изображения
sBitMap = wx.StaticBitmap(self._ribbon, -1, wx.Bitmap("image.png", wx.BITMAP_TYPE_ANY), (0, 0), (bmp.GetWidth(), bmp.GetHeight()))
Я использую GenBitmapButton из wx.lib.buttons
path="path to bitmap"
size=(size of bitmap)
b=GenBitmapButton(Parent,wx.ID_ANY, bitmap=wx.Bitmap(path),
style=wx.NO_BORDER|wx.BU_EXACTFIT,size=size)
Это делает трюк просто отлично, и я выстроил растровые изображения без промежутков между ними для кнопок.