如何使wxpython位图按钮只有图像,没有额外的像素和图像边框

时间:2014-02-08 10:58:04

标签: python wxpython wxwidgets

我正在尝试将图像用作wxpython中的按钮。我想要的是按钮周围应该只有一个位图,没有其他边框或任何额外的像素。我真的只想捕获一个位图上的点击,所以也许我不需要一个实际的按钮。因此不需要“按下”按钮。

我使用带有platebutton.PB_STYLE_NOBG的PlateButton的一个选项,只有在没有任何鼠标悬停或点击的情况下显示图像时才能正常工作。现在当我悬停按钮时,我想要的是同一图像的阴影图像(只有图像,没有边框或任何东西),但我得到的是我的图像周围的方形边框。

我的代码:

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 个答案:

答案 0 :(得分:3)

您可以直接使用静态位图并在此位图中捕获鼠标事件。

试试这个:

     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()))

答案 1 :(得分:1)

我正在使用wx.lib.buttons的GenBitmapButton

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)

这样做很好,我的位图排列在一起,按钮之间没有间距。