我的问题是,我们是否可以给某个项目分配/绑定一些值,并隐藏那个值(或者我们是否可以用另一种方式做同样的事情)。
示例:假设ListCtrl上的列是"Name“和"Description":
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参数是:
“名称”
“描述”
“Hiddendescription描述”
然后用户填写此文本,然后单击按钮创建项目,我基本上只想显示名称和描述,并隐藏"HiddenDescription“,但这样做是为了以后可以使用它。
很抱歉在这篇文章中解释了不止一次,但我想确保你理解我假装做的事情。
发布于 2010-04-17 05:27:09
wxListCtrl允许您将任意数据与不会显示的项相关联-请阅读文档以了解以下方法:
SetItemData
GetItemData
FindItemData
wxListItem类还具有GetData和SetData方法。
发布于 2010-04-17 05:40:55
与使用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))然后,当您想要使用您的附加数据时,您只需在字典中查找正确的项,您的数据就会在那里。
发布于 2010-04-17 05:00:20
您可以始终将隐藏列的宽度设置为零,这可能会实现您想要的效果。我刚刚在一个C++ (非wx)程序中尝试了一下,它工作得很好。
https://stackoverflow.com/questions/2656017
复制相似问题