Wxpython 如何在报告模式下使wx.ListCtrl上的图标不可见?
我必须得到一个只有两列字符串的列表。在GTK上一切正常,但在windows 7上,我得到以下信息: 每行使用附加图像列表中的图像编号0。我怎样才能摆脱这个图标 wxPython 2.9.2.4,Win7 x64 更新: 以下是GTK的列表(如您所见,没有图标):Wxpython 如何在报告模式下使wx.ListCtrl上的图标不可见?,wxpython,Wxpython,我必须得到一个只有两列字符串的列表。在GTK上一切正常,但在windows 7上,我得到以下信息: 每行使用附加图像列表中的图像编号0。我怎样才能摆脱这个图标 wxPython 2.9.2.4,Win7 x64 更新: 以下是GTK的列表(如您所见,没有图标): Microsoft ListView小部件有一个很好的“功能”,如果有一个分配给控件的图像列表,那么它假定您总是希望为每个项目显示一个图像。如果你没有为一个项目指定一个,那么它将为你使用图像列表中的第一个,因为根据微软的说法,这是你真
Microsoft ListView小部件有一个很好的“功能”,如果有一个分配给控件的图像列表,那么它假定您总是希望为每个项目显示一个图像。如果你没有为一个项目指定一个,那么它将为你使用图像列表中的第一个,因为根据微软的说法,这是你真正想要做的,但只是忘记了自己去做。显然
无论如何,解决方法是将图像列表中的第一个图像设置为完全透明的图标,或者将其他图标显式指定给项目。您能告诉我们GTK上的东西是什么样子的吗?很遗憾,我现在不能这样做,至少在6小时内……请,看看它在GTK中是什么样子。我还必须在OSX上检查它……跨平台编程的副作用)谢谢!
class ListViewCtrl(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin):
def __init__(self, parent, ID, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0):
wx.ListCtrl.__init__(self, parent, ID, pos, size, style)
listmix.ListCtrlAutoWidthMixin.__init__(self)
class ListView(wx.Panel, listmix.ColumnSorterMixin):
def __init__(self, parent):
wx.Panel.__init__(self, parent, -1, style=wx.WANTS_CHARS)
self.il = wx.ImageList(16, 16)
self.up = self.il.Add(resources.filter_up.GetBitmap())
self.dn = self.il.Add(resources.filter_down.GetBitmap())
self.list = ListViewCtrl(self, -1, style=wx.LC_REPORT | wx.SIMPLE_BORDER | wx.LC_EDIT_LABELS | wx.LC_SORT_ASCENDING)
self.list.SetImageList(self.il, wx.IMAGE_LIST_SMALL)
i = 0
_program_dir = os.path.split(__file__)[0]
self.itemDataMap = {}
for fn in os.listdir(os.path.join(_program_dir, '../design/caps')):
self.itemDataMap[i] = (fn, "Line {0}".format(i+1))
i += 1
self.PopulateList()
listmix.ColumnSorterMixin.__init__(self, 3)
self.__DoLayout()
def __DoLayout(self):
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.list, 1, wx.EXPAND)
self.SetSizer(sizer)
self.SetAutoLayout(True)
def PopulateList(self):
info = wx.ListItem()
info.m_mask = wx.LIST_MASK_TEXT | wx.LIST_MASK_IMAGE | wx.LIST_MASK_FORMAT
info.m_image = -1
info.m_format = 0
info.m_text = "File name"
self.list.InsertColumnInfo(0, info)
info.m_text = "Column 2"
self.list.InsertColumnInfo(1, info)
for k, v in self.itemDataMap.items():
index = self.list.InsertStringItem(sys.maxint, v[0])
self.list.SetStringItem(index, 1, v[1])
self.list.SetItemData(index, k)
self.list.SetColumnWidth(0, 100)
self.list.SetColumnWidth(1, wx.LIST_AUTOSIZE)
self.currentItem = 0
def GetListCtrl(self):
return self.list
def GetSortImages(self):
return (self.dn, self.up)