我有一个创建为
的列表self.statusListCtrl = wx.ListCtrl(self.panelUpper, -1, style=wx.LC_REPORT|wx.SUNKEN_BORDER)
我使用
将数据添加到此列表中self.statusListCtrl.Append([datetime.datetime.now(),action,result])
当我的过程全部完成后,我有一个很好的列表,显示已尝试的内容,该尝试的结果和日期时间戳。现在我想要做的是将其输出到文本文件。我的问题是我无法正确地从listctrl获取数据。
这就是我试图遍历列表的方式。
fileName = 'd:\ssplogs\sspInstaller.log'
FILE = open(fileName,"w")
for itemIdx in range(0,self.statusListCtrl.GetItemCount()):
line = str(self.statusListCtrl.GetItemText(itemIdx) + "\n")
print "line" , line
writeLine = line
FILE.write(writeLine)
FILE.close()
我得到的输出只是我的日期时间戳,这是我列表的第一列。我如何得到这个,所以我看到像
这样的东西datetime, action, result
答案 0 :(得分:2)
使用此方法获取Row x Column数据:
self.list.GetItem(row, col).GetText()
工作示例:
import wx
class MainWindow(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
self.panel = wx.Panel(self)
self.list = wx.ListCtrl(self.panel, style=wx.LC_REPORT)
self.list.InsertColumn(0, "Date")
self.list.InsertColumn(1, "Action")
self.list.InsertColumn(2, "Result")
for a in range(5):
self.list.Append(["Date %d" % a, "Action %d" % a, "Result %d" % a])
self.sizer = wx.BoxSizer()
self.sizer.Add(self.list, proportion=1, flag=wx.EXPAND)
self.panel.SetSizerAndFit(self.sizer)
self.Show()
# Save
for row in range(self.list.GetItemCount()):
print(", ".join([self.list.GetItem(row, col).GetText() for col in range(self.list.GetColumnCount())]))
app = wx.App(False)
win = MainWindow(None)
app.MainLoop()