我的问题是,如果我们能分配/绑定一定的参考价值的特定项目,并隐藏值(或者,如果我们可以做的另一种方式是相同的)。

实施例:可以说,上的ListCtrl的列是“名称”和“描述”:

self.lc = wx.ListCtrl(self, -1, style=wx.LC_REPORT)
self.lc.InsertColumn(0, 'Name')
self.lc.InsertColumn(1, 'Description')

当我加我希望他们能够显示名称参数项目和描述:

num_items = self.lc.GetItemCount()
        self.lc.InsertStringItem(num_items, "Randomname")
        self.lc.SetStringItem(num_items, 1, "Some description here")

现在我想要做的基本上是一些分配到未显示这样我就可以在应用程序后访问该项目。

所以,我想补充一点,就是没有在应用中显示,但在项目值,如:

hiddendescription = "Somerandomthing"

仍然没有已了解?那么可以说,我添加一个按钮,与其他一些TextCtrls设置参数和TextCtrls参数是添加一个项目:

“名称”

“描述”

“Hiddendescription”

那么接下来用户填写此textctrls并点击按钮来创建项目,我基本上要只显示名称和描述,并隐藏“HiddenDescription”,但做到这一点,所以我可以在以后使用它。

对不起,解释对这个职位超过1周时间,但我想确保你明白我假装做。

有帮助吗?

解决方案

在wxListCtrl可以让你任意数据与项目,将不被显示关联 - 阅读文档对以下方法:

SetItemData

GetItemData

FindItemData

在wxListItem类也有的GetData和SetData的方法。

其他提示

而不是使用的ListCtrl作为你的数据结构,你能保持一个包含所有信息,你想对象的单独列表/字典,并从其他数据结构刷新的ListCtrl。

例如:

class MyObject(object):
    def __init__(self, name, description, hidden_description):
        self.name = name
        self.description = description
        self.hidden_description = hidden_description

然后,在应用程序中:

def __init__(self):
    self.my_items = {}
    self.lc = wx.ListCtrl(self, -1, style=wx.LC_REPORT)
    self.lc.InsertColumn(0, 'Name')
    self.lc.InsertColumn(1, 'Description')

def addItemToMyListCtrl(self, name, description, hidden):
    new_item = MyObject(name, description, hidden)
    self.my_items[name] = new_item
    self.lc.Append((new_item.name, new_item.description))

然后,当你想用你额外的数据你可以查找正确的项目,在字典中,你的数据将在那里。

您总是可以设置隐藏的列的零宽度,即可能完成你想要的。我只试图在一个C ++(非WX)程序和它工作得很好。

scroll top