Python печатает содержимое из wx.ListCtrl - PullRequest
0 голосов
/ 18 апреля 2011

У меня есть список, созданный как

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

1 Ответ

2 голосов
/ 18 апреля 2011

Используйте это, чтобы получить строку x Данные столбца:

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()
...