我有一个列表ctrl框,我用数据填充它。
self.listView1.Append([sFilename,sTitle,sArtist,sAlbum,sDestDir])
我创建了一个事件,当用户点击列表中的特定项目时会触发该事件
def OnListView1ListItemSelected(self, event):
print "onListViewSelect"
这样可行,但我坚持的是如何从用户点击的列表中捕获单行数据?
答案 0 :(得分:1)
使用wxPython 2.8.10,这是将所选行中所有列的文本放入列表的一种方法。您将获得对象,选定的索引,列数,然后从每列中获取文本:
def onListView1ListItemSelected(self, event):
obj = event.GetEventObject()
index = event.GetIndex()
columns = obj.GetColumnCount()
data = []
for i in range(columns):
item = obj.GetItem(index, i)
data.append(item.GetText())
print(data)
我提到了这个版本,因为我认为最新的wxPython版本允许你在wx.ListCtrl.GetItemText中指定一个列,这可以简化一些事情。我没试过。
答案 1 :(得分:1)
我认为最简单的方法是将数据与行关联起来。你可以在这里阅读我的方法:
http://www.blog.pythonlibrary.org/2011/01/04/wxpython-wx-listctrl-tips-and-tricks/
就个人而言,我最喜欢ObjectListView:http://objectlistview.sourceforge.net/python/index.html