2013-03-29 3 views
0

У меня есть массив строк, например ['Hello World', 'Goodbye Universe', Let's go to the mall'], и я хочу добавить в ListCtrl, как только мой код печатает только определенные буквы каждого индекса в массиве. Мой код:ListCtrl set string item

self.list = wx.ListCtrl(panel,size=(1000,1000)) 
self.list.InsertColumn(0,'Rules') 
for i in actualrules: 
    self.list.InsertStringItem(sys.maxint, i[0]) 

actualrules является массив

+0

Переменная 'i' кажется строкой, а не индексом. Вы должны получить некоторые ошибки (исходящие из 'actualrules [i]'), правильно? – Anna

ответ

0

Ваш список actualrules имеет одну цитату в одной из строк, так что вы должны окружить его в двойные кавычки, как показано ниже.

 actualrules = ['Hello World', 'Goodbye Universe', 
        "Let's go to the mall"] 

В вашем цикл я становлюсь каждым элементом списка, то вы принимаете только первую букву, делая я [0]

Ниже приведены рабочего пример вашего списка

import sys 
import wx 


class TestFrame(wx.Frame): 
    def __init__(self, *args, **kwargs): 
     super(TestFrame, self).__init__(*args, **kwargs) 

     actualrules = ['Hello World', 'Goodbye Universe', 
         "Let's go to the mall"] 

     panel = wx.Panel(self) 
     self.list = wx.ListCtrl(panel, size=(1000, 1000), style=wx.LC_REPORT) 
     self.list.InsertColumn(0, 'Rules') 
     for i in actualrules: 
      self.list.InsertStringItem(sys.maxint, i) 

     pSizer = wx.BoxSizer(wx.VERTICAL) 
     pSizer.Add(self.list, 0, wx.ALL, 5) 
     panel.SetSizer(pSizer) 

     vSizer = wx.BoxSizer(wx.VERTICAL) 
     vSizer.Add(panel, 1, wx.EXPAND) 
     self.SetSizer(vSizer) 


if __name__ == '__main__': 
    wxapp = wx.App(False) 
    testFrame = TestFrame(None) 
    testFrame.Show() 
    wxapp.MainLoop()