Python wx.ListControl中的图像被切断

Python wx.ListControl中的图像被切断,python,wxpython,Python,Wxpython,我在报告模式下有一个wx.ListCtrl,我使用图像列表显示带有SetItemColumnImage的50x50像素的图标。现在的问题是,我在图标右侧列中显示的文本高度小于50像素,并且图标中高于文本的部分被切断 有没有办法告诉ListCtrl将行高度调整为图标的高度?最后一个办法是改变文本的大小,但应该有更好的办法 更新: 以下是我的一些代码: self.list = util.ListCtrl(nb, style=wx.LC_REPORT| wx.LC_SI

我在报告模式下有一个wx.ListCtrl,我使用图像列表显示带有SetItemColumnImage的50x50像素的图标。现在的问题是,我在图标右侧列中显示的文本高度小于50像素,并且图标中高于文本的部分被切断

有没有办法告诉ListCtrl将行高度调整为图标的高度?最后一个办法是改变文本的大小,但应该有更好的办法

更新:

以下是我的一些代码:

self.list = util.ListCtrl(nb, style=wx.LC_REPORT|
                wx.LC_SINGLE_SEL|wx.LC_NO_HEADER|wx.LC_ALIGN_LEFT)
self.list.InsertColumn(0, 'Avatar', width=-1)
self.list.InsertColumn(1, 'Name', width=-1)
self.list.SetColumnWidth(0, 50)

self.imagelist = wx.ImageList(50, 50, 255, 20)
self.list.SetImageList(self.imagelist, wx.IMAGE_LIST_SMALL)

i = 0
for user in self.users:
    self.list.Append(['', user['name']])

    if user['avatar']:
        bitmap = wx.BitmapFromImage(user['avatar'])
        imageidx = self.imagelist.Add(bitmap)
        self.list.SetItemColumnImage(i, 0, imageidx)

    i += 1

当我删除LC_报告标志时,图像完全可见,但它们都显示在一行中,名称不再可见。

由于图像是50x50,我认为它们不再符合“小”的条件。尝试使用wx.IMAGE\u LIST\u NORMAL而不是wx.IMAGE\u LIST\u SMALL。我找不到任何关于手动设置行高度的信息,所以我猜这是不可能的。然而,我确实在这个话题上找到了一个答案,它在wx2.9中得到了解决。你用的是2.9吗


或者,您可以使用UltimateListCtrl,它是纯Python,如果它没有这种功能,您可能会很快将其修补,因为作者的反应非常灵敏。

我喝了几杯咖啡才弄明白

对ImageList.Add的调用应位于ListCtrl.Append(或ListCtrl.InsertItem)之前,以便ListCtrl根据ImageList中图像的高度更改其行的高度

所以不是

for user in self.users:
    self.list.Append(['', user['name']])

    if user['avatar']:
        bitmap = wx.BitmapFromImage(user['avatar'])
        imageidx = self.imagelist.Add(bitmap)
        self.list.SetItemColumnImage(i, 0, imageidx)
你应该这样做

for user in self.users:

    if user['avatar']:
        bitmap = wx.BitmapFromImage(user['avatar'])
        imageidx = self.imagelist.Add(bitmap)

    self.list.Append(['', user['name']])

    if user['avatar']:
        self.list.SetItemColumnImage(i, 0, imageidx)
这看起来很难看,直到你实现了一个默认的化身:

def_avatar = 'default_avatar.jpg'

for user in self.users:

    bitmap = wx.BitmapFromImage(user['avatar'] if user['avatar'] else def_avatar)
    imageidx = self.imagelist.Add(bitmap)

    self.list.Append(['', user['name']])
    self.list.SetItemColumnImage(i, 0, imageidx)

你能给我们看看你的代码吗?它是否在没有报告标志的情况下正确显示?