2014-02-08 2 views
2

Я пытаюсь использовать изображение в виде кнопки в wxpython. Я хочу, чтобы вокруг кнопки должно быть только растровое изображение и никакая другая граница или какой-либо дополнительный пиксель. Я бы просто хотел захватить щелчок по растровому изображению, так что, возможно, мне не нужна настоящая кнопка. Следовательно, нажатие кнопки «вниз» не требуется.Как сделать Wxpython Bitmap Button только с изображением и без дополнительных пикселей и рамкой вокруг изображения

Один из вариантов, что я использую 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) 
+0

Возможно, вы захотите принять ответы на некоторые из ваших более ранних вопросов, прежде чем искать слишком большую помощь. Вот как это работает :) – GreenAsJade

ответ

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" 

Edit:

Fetch размер от исходного изображения и использовать его для создания статического растрового изображения

sBitMap = wx.StaticBitmap(self._ribbon, -1, wx.Bitmap("image.png", wx.BITMAP_TYPE_ANY), (0, 0), (bmp.GetWidth(), bmp.GetHeight())) 
+0

Большое спасибо за ваш ответ, он работает. Но я все еще получаю прямоугольник белого цвета вокруг моего изображения, и я не хочу, чтобы это произошло. Я просто хочу поставить изображение на солидный фон. Есть ли какой-либо флаг для этого. Спасибо ... Кроме того, я хочу показать выпадающее меню на изображении, например, в главном меню MS office, возможно ли это сделать. – Samyak

+0

@ user3248521 Возможно, это связано с тем, что ваше изображение меньше (37, 17) –

+0

Спасибо, что это работает ... Но я использую его на ленте с лентой как родительской, а не с фреймом, поэтому у меня возникла проблема. Использование фрейма в качестве родительского элемента отлично работает. – Samyak

1

Я использую 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) 

Это делает трюк просто отлично, и у меня есть растровые изображения, выстроенные без пробелов между ними для кнопок.

Смежные вопросы