【问题标题】:How to make a wxpython Bitmap Button with only image and no extra pixels and border around image如何制作一个只有图像而没有额外像素和图像边框的wxpython位图按钮
【发布时间】:2014-03-05 21:23:21
【问题描述】:

我正在尝试将图像用作 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)

【问题讨论】:

  • 在寻求更多帮助之前,您可能希望接受之前一些问题的答案。这就是它的工作方式:)

标签: python wxpython wxwidgets


【解决方案1】:

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

试试这个:

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

【讨论】:

  • 非常感谢您的回答,它有效。但是我的图像周围仍然有一个白色矩形,我不希望这种情况发生。我只想将图像放在纯色背景上。有没有任何标志可以做到这一点。谢谢...另外,我想在图片点击时显示一个下拉菜单,就像在 MS Office 左上角图片中一样,是否可以这样做。
  • @user3248521 这可能是因为您的图像小于 (37, 17)
  • 谢谢它的工作原理......但我在功能区上使用它,功能区作为父级而不是框架,所以这就是我遇到问题的原因。使用框架作为父级,它工作得非常好。
【解决方案2】:

我正在使用 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)

这可以很好地解决问题,并且我将位图排成一列,按钮之间没有间距。

【讨论】:

    猜你喜欢
    • 2012-01-04
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多