2014-02-08 32 views
2

我想在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) 
+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" 

编辑:

获取从源图像的大小,并用它来创建静态位图

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

非常感谢您的答案,它的工作原理。但是我仍然在图像周围形成一个白色矩形,我不希望这种情况发生。我只是想在一个坚实的背景上放置一个图像。有没有任何标志可以做到这一点。谢谢...此外,我想显示一个下拉菜单上的图像点击就像在微软办公室的左上方图像,是否有可能这样做。 – 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) 

这是做的伎俩就好了,我有位图排列在它们之间没有按钮间距。