2016-05-08 21 views
0

グリッドにリストを入力しようとしていますが、実行するたびにこのエラーが発生します。SetValue():wxGridStringTableの行または列のインデックスが無効です。私はちょうど私が最近Pythonを学び始めたので、それは何か簡単なことですが謝ります。wxPython whileループでグリッドにリストを追加する

コード:コードは、行1、列1から始まる値を設定しようとしているが、行とcolsがゼロベースで

import wx 
import wx.grid 

class main(wx.Frame): 
    def __init__(self): 
     wx.Frame.__init__(self, None) 
     items = ["milk", "cherries", "soup"] 
     total = len(items) 
     grid = wx.grid.Grid(self) 
     grid.SetRowLabelSize(0) 
     grid.SetColLabelSize(0) 
     grid.CreateGrid(total, 1) 
     listItem = 0 
     while listItem < total: 
      grid.SetCellValue(listItem + 1, 1, items[listItem]) 
      listItem += 1 

if __name__ == "__main__": 
    app = wx.App(False) 
    frame = main() 
    frame.Show() 
    app.MainLoop() 

答えて

0

。 また、whileループを使用する代わりに、列挙型のforループを使用してアイテムのインデックスを取得する方がよいでしょう。

import wx 
import wx.grid 

class main(wx.Frame): 
    def __init__(self): 
     wx.Frame.__init__(self, None) 
     items = ["milk", "cherries", "soup"] 
     total = len(items) 
     grid = wx.grid.Grid(self) 
     grid.SetRowLabelSize(0) 
     grid.SetColLabelSize(0) 
     grid.CreateGrid(total, 1) 
     for index, value in enumerate(items): 
      grid.SetCellValue(index, 0, value) 


if __name__ == "__main__": 
    app = wx.App(False) 
    frame = main() 
    frame.Show() 
    app.MainLoop() 
関連する問題