【问题标题】:wxPython: ListCtrl finding the item with given stringwxPython:ListCtrl 查找具有给定字符串的项目
【发布时间】:2013-12-23 10:05:07
【问题描述】:

我创建了一个 wx.ListCtrl 并填写了内容。如何使用给定的字符串检索项目?

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

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

>>> -1

我有:wxPython 2.8.10.1、Windows 7、Python 2.4

【问题讨论】:

  • 实际上应该可以。你真的有“kid_inst”字符串附加到你的ListCtrl 吗?你能显示更多代码吗?
  • 有关 FindItem 的有趣信息请参见 wxpython-users.1045709.n5.nabble.com/…

标签: python find wxpython listctrl


【解决方案1】:

它似乎只适用于第一列:

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。但我从来没有这样做过,所以我无法提供帮助。

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-26
      • 1970-01-01
      • 2017-04-15
      • 2012-04-20
      • 1970-01-01
      • 2011-10-16
      相关资源
      最近更新 更多