dps*_*swt 3 python wxpython listctrl
我的问题是,我们是否可以为某个项目分配/绑定某个值并隐藏该值(或者如果我们可以用另一种方式做同样的事情).
示例:假设ListCtrl上的列是"Name"和"Description":
self.lc = wx.ListCtrl(self, -1, style=wx.LC_REPORT)
self.lc.InsertColumn(0, 'Name')
self.lc.InsertColumn(1, 'Description')
Run Code Online (Sandbox Code Playgroud)
当我添加一个项目时,我希望它们显示Name参数和描述:
num_items = self.lc.GetItemCount()
self.lc.InsertStringItem(num_items, "Randomname")
self.lc.SetStringItem(num_items, 1, "Some description here")
Run Code Online (Sandbox Code Playgroud)
现在我想要做的是基本上为未显示的项目分配一些内容,以便稍后我可以在应用程序上访问.
所以我想添加一些未在应用程序上显示但在项目值上的内容,如:
hiddendescription = "Somerandomthing"
Run Code Online (Sandbox Code Playgroud)
还是没有看不到?好吧,我想添加一个按钮来添加一个项目与其他一些TextCtrls来设置参数,TextCtrls参数是:
"名称"
"描述"
"Hiddendescription"
然后,用户填写这些文本,然后单击按钮创建项目,我基本上只想显示名称和描述并隐藏"HiddenDescription"但是这样做我以后可以使用它.
很抱歉在这篇文章中解释了超过1次,但我想确保你理解我假装做的事情.
而不是使用的ListCtrl为您的数据结构,你可以继续包含所有你想要的信息,并从其他数据结构刷新的ListCtrl对象的单独列表/字典.
例如:
class MyObject(object):
def __init__(self, name, description, hidden_description):
self.name = name
self.description = description
self.hidden_description = hidden_description
Run Code Online (Sandbox Code Playgroud)
然后在你的申请中:
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))
Run Code Online (Sandbox Code Playgroud)
然后,当您想要使用其他数据时,您只需在字典中查找正确的项目,您的数据就会存在.