如何将wxListView框的内容输出到外部日志文件

时间:2011-02-03 20:47:05

标签: python wxpython

我有一个名为lvActions的wx.ListView框,我使用类似于

的代码添加数据
self.lvActions.Append([datetime.datetime.now(),filename,"Moved"])

我想要做的是当我完成所有操作并有一个列表时,我想将此文件的全部内容输出到日志文件中。这就是我尝试这样做的方式

logfile = open(logFullPath, "a")
for events in self.lvActions:
    logfile.write(events)
logfile.close()

我得到的错误是

TypeError: 'ListView' object is not iterable

如果ListView不可迭代,我该如何将其内容转储到文件?

1 个答案:

答案 0 :(得分:1)

正如您所指出的那样,listview本身不能以您想要的方式迭代。与大多数wx小部件一样,您需要计算小部件中的项目数,然后在该位置询问项目的文本。由于您正在使用listview(从listctrl派生),您必须单独获取每列的文本

logfile = open(logFullPath, "a")
for event in xrange(self.lvActions.GetItemCount()):
    date = self.lvActions.GetItem(event, 0).GetText()        # item in column 0
    filename = self.lvActions.GetItem(event, 1).GetText()    # col 1, etc
    action = self.lvActions.GetItem(event, 2).GetText()
    logfile.write( "{0}, {1}, {2}\n".format(date, filename, action)

logfile.close()

GetItem()返回一个ListItem对象,该对象表示该行/列中的数据。然后我使用GetText()方法从该项对象中获取文本。您可能还应该根据需要添加错误。另外,我使用了硬编码列名(基于您的输入)。您需要根据需要进行调整。