【发布时间】:2017-03-30 11:00:22
【问题描述】:
我正在使用 wxPython,并想创建一个带有股票图标且没有文本的按钮。如果我这样做了
wx.Button(self,wx.ID_ADD)
我得到一个带有加号图标的按钮,旁边有“添加”字样。
我怎样才能得到一个只有图标的按钮?
【问题讨论】:
我正在使用 wxPython,并想创建一个带有股票图标且没有文本的按钮。如果我这样做了
wx.Button(self,wx.ID_ADD)
我得到一个带有加号图标的按钮,旁边有“添加”字样。
我怎样才能得到一个只有图标的按钮?
【问题讨论】:
乍一看,wx.BU_NOTEXT 似乎可以解决这个问题,但实际上并没有,因为 wxWidgets 假设如果使用这种样式,那么按钮应该有一个明确关联的位图。
所以最简单的解决方法是通过调用btn->SetBitmapLabel(wxArtProvider::GetBitmap(wxART_PLUS, wxART_MENU)) 来实际设置此位图(这是 C++,但也应该很容易翻译成 Python)。如果你这样做,你就不需要再使用wxID_ADD作为按钮ID,但是如果你仍然想继续使用这个ID,那么你还需要使用wxBU_NOTEXT来摆脱库存文本。
而且,与有意符合标准平台外观的普通按钮不同,可能会根据平台显示或不显示图标,此代码在任何地方都可以正常工作。
【讨论】:
BU_NOTEXT 无效。
button = wx.Button(self,wx.ID_ANY, style=wx.BU_EXACTFIT),然后使用了button.SetBitmapLabel(wx.ArtProvider.GetBitmap(wx.ART_PLUS, wx.ART_MENU))。我添加了BU_EXACTFIT,所以按钮的大小适合图标,否则它会以标准按钮宽度呈现。
wx.ArtProvider 有限选择中没有的图标之一,例如wx.ID_SELECTALL 出现的“全选”按钮,然后您可以使用 GTK+ 库存商品 ID,例如,button.SetBitmapLabel(wx.ArtProvider.GetBitmap("gtk-select-all", wx.ART_MENU)) per docs.wxwidgets.org/stable/…