附加到PopupMenu的MenuItem在wxPython中不显示位图

1 投票
2 回答
825 浏览
提问于 2025-04-17 12:23

在Linux上使用Python 2.7。

我正在从一个字符串列表中创建MenuItem对象。我使用wx.MenuItem.SetBitmap()来设置图标,但在弹出菜单上图像没有显示出来。

这是我创建弹出菜单的方法:

    def CreatePopupMenu(self, list):
          self.menu = wxMenu()
          i = 0
          substring = self.GetLastWord()
          for tableName in list:
                if tableName.startswith(substring):
                item = wx.MenuItem(self.menu, i, tableName)
                item.SetBitmap(wx.Bitmap('a.png'))
                self.menu.AppendItem(item)
                i += 1
                pos = self._Editor.PointFromPosition(self._Editor.GetCurrentPos())
                pos.x += self._Editor.GetFont().GetPixelSize().width
                pos.y += self._Editor.GetFont().GetPixelSize().height
                self.Bind(wx.EVT_MENU, self.OnPopupItemSelected, item)

          if self.menu.GetMenuItemCount() > 0:
                #menuItem = self.menu.FindItemById(0)
                self.PopupMenu(self.menu, pos)
          self.menu.Destroy()

2 个回答

1

看看这个改编过的代码:

def __init__(self):
    wx.Frame.__init__(self, None, -1)
    self.CreatePopupMenu(['mOpen', 'mClose', 'mFile'])
    menuBar = wx.MenuBar()
    menuBar.Append(self.menu, 'menu')
    self.SetMenuBar(menuBar)

def CreatePopupMenu(self, list):
    self.menu = wx.Menu()
    i = 0
    #substring = self.GetLastWord()
    substring = 'm'
    for tableName in list:
        if tableName.startswith(substring):
            item = wx.MenuItem(self.menu, i, tableName)
            item.SetBitmap(wx.Bitmap('zimages/gato.png'))
            self.menu.AppendItem(item)

在这里输入图片描述

0

有点尴尬,但我自己找到了问题的答案。这个问题不是跟编程语言有关,而是跟Gnome的设置有关。

显然,Gnome默认是不显示菜单项上的图标的……

我在这里找到了这个信息。

谢谢大家!

撰写回答