我创建了一个 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())