如何从wxpython gui click事件中获取列表数据?

时间:2011-02-14 13:54:30

标签: python wxpython

我有一个列表ctrl框,我用数据填充它。

self.listView1.Append([sFilename,sTitle,sArtist,sAlbum,sDestDir])

我创建了一个事件,当用户点击列表中的特定项目时会触发该事件

def OnListView1ListItemSelected(self, event):
    print "onListViewSelect"

这样可行,但我坚持的是如何从用户点击的列表中捕获单行数据?

2 个答案:

答案 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