wxPython:ListCtrl查找具有给定字符串的项



我已经创建了一个wx。ListCtrl和我已经填写了内容。如何检索具有给定字符串的项目?

我使用过FindItem,但它总是返回-1(未找到)。我用错了吗?

print self.List.FindItem(-1, "kid_inst")
>>> -1

我有:wxPython 2.8.10.1,Windows 7,Python 2.4

它似乎只适用于第一列:

import wx
class MainWindow(wx.Frame):
    def __init__(self, *args, **kwargs):
        wx.Frame.__init__(self, *args, **kwargs)
        self.panel = wx.Panel(self)
        self.list = wx.ListCtrl(self.panel, style=wx.LC_REPORT)
        self.list.InsertColumn(0, "No.")
        self.list.InsertColumn(1, "Description")
        self.list.Arrange()
        for i in range(1, 6):
            self.list.Append(["It's %d" % (i), "", ""])
            # DOES NOT WORK! self.list.Append(["", "It's %d" % (i), ""])
        self.sizer = wx.BoxSizer(wx.VERTICAL)
        self.sizer.Add(self.list, proportion=1, flag=wx.EXPAND | wx.ALL, border=5)
        self.panel.SetSizerAndFit(self.sizer)
        self.Show()
        print(self.list.FindItem(-1, "It's 4"))

app = wx.App(False)
win = MainWindow(None)
app.MainLoop()

还有一种更复杂的方法是如何通过创建wx.ListItem()将项目添加到列表中,SetItemData可以用于向项目添加更多数据。那么你可能会做FindItemData。但我从来没有那样做过,所以我不能提供帮助。

这种情况的替代方法,而不是使用FindItem:

将项目添加到ListCtrl时,创建一个字典来存储每个项目的位置。

当给定项目的名称时,当我们想在ListCtrl中选择该名称时,使用字典搜索位置,然后使用GetItem获取实际项目,最后选择。

item = ListCtrl_name.GetItem(instance_location_dictionary [item_name])
ListCtrl_name.Select(item.GetId())

最新更新