python错误:IndexError:列表索引超出范围

时间:2015-01-01 17:26:31

标签: python xbmc

我需要对代码提供一些基本的帮助,每次使用变量self.add_programs添加列表时,我都会尝试使用变量program_controls的值创建一个新列表按钮存储在数组中。

当我尝试这个时:

self.add_programs = list()
self.rows += 1

program_controls = xbmcgui.ControlButton(
    int(position_start), 
    int(position_top), 
    int(program_width), 
    int(program_height), 
    program_title, 
    focusTexture = self.path + self.button_focus, 
    noFocusTexture = self.path + self.button_nofocus,
    textColor ='0xFFFFFFFF',
    focusedColor ='0xFF000000'
)
self.add_programs[self.rows].append(ProgramControls(program_controls, program))

它给我错误:IndexError:列表索引超出范围

错误是跳到这一行:

self.add_programs[self.rows].append(ProgramControls(program_controls, program))

以下是代码:

class ProgramControls(object):
     def __init__(self, control, program):
         self.control = control
         self.program = program



class MyClass(xbmcgui.WindowXML):

    def __init__(self):
        self.add_programs = list()
        self.rows = 0

    def GoDown(self):
        self.add_programs = list()
        self.rows += 1

        program_controls = xbmcgui.ControlButton(
            int(position_start), 
            int(position_top), 
            int(program_width), 
            int(program_height), 
            program_title, 
            focusTexture = self.path + self.button_focus, 
            noFocusTexture = self.path + self.button_nofocus,
            textColor ='0xFFFFFFFF',
            focusedColor ='0xFF000000'
        )
        self.add_programs[self.rows].append(ProgramControls(program_controls, program))
    prog_button = [elem.control for elem in self.add_programs]


    if self.programs == False:
       self.addControls(prog_button)

当我添加按钮列表时,你能帮助我每次如何将按钮存储在数组中吗?

如果可以的话,请告诉我。

1 个答案:

答案 0 :(得分:3)

如果您执行mylist[3].append(),则会尝试附加到mylist中第4项的列表。您也可以将其写为(mylist[3]).append()以使其更清晰。

如果您要追加到mylist,则需要使用mylist.append()。如果要将其设置在某个索引上,可以使用list.insert(index, item);但是,如果列表不像index那么长,那么它只会在末尾附加。

如果您想使用特定密钥,请改用dict()

mydict = {}
dict[3] = my_item

在您的情况下,我只会使用self.add_programs.append()