如何从objectlistview(wxpython)中删除重复的项目?

时间:2012-08-16 16:34:14

标签: wxpython items objectlistview

我在wxpython(和python也是:)的新手,我正在尝试为我做一个自定义程序并学习,但有些东西我无法做到。我一直在寻找Objectlistview的例子,但没有那么多。我从here复制/粘贴/编辑代码(最后一个例子),我想做这样的事情以避免重复的项目:

self.olv = ObjectListView(self, style=wx.LC_REPORT|wx.SUNKEN_BORDER)
...
self.olv.SetDropTarget(MyFileDropTarget(self))
self.setFiles()
self.RemoveDuplicated(self.olv)

def RemoveDuplicated(self, X):
    for all in X:
        Counter = 0
        for B in X:
            if X.path(A) == X.path(B):
                Counter += 1
            if (X.path(A) == X.path(B) and Counter >=2):
                 Counter += 1
                 RemoveObject(B)

有任何想法或教程吗?提前谢谢。

现在完成:D,ty Mike再次。

     def __init__(self, window):
    """Constructor"""
    wx.FileDropTarget.__init__(self)
    self.window = window
    self.all_filenames = []


#----------------------------------------------------------------------
def OnDropFiles(self, x, y, filenames):
    """
    When files are dropped, update the display
    """
    self.entriesList = list()   # Actual dropped file entries; duplicates are avoided.
    self.haveEntries = False    # Tracks actual dropped file entries, but not help entries.

    self.RemoveDuplicated(self.all_filenames, filenames)
    self.all_filenames += filenames
    self.window.updateDisplay(filenames)

    print len(all_filenames) , len(filenames)

def RemoveDuplicated(self, X, Y):
    for A in X:
        for B in Y:
            if A == B:
                Y.remove(B)

1 个答案:

答案 0 :(得分:0)

由于您添加到ObjectListView的内容基本上是对象或词组的列表,因此您可以在将窗口小部件设置为这些值之前在该列表上运行重复数据删除过程。您可以使用Python的set函数加上解决方案here来删除对象。

有几个地方可以查找ObjectListView信息: