简体   繁体   English

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

[英]python error: IndexError: list index out of range

I need some basic help with my code, I'm trying to create a new list with the value for the variable self.add_programs in each time when I use the variable program_controls to add a list of buttons to store in the arrays. 我需要一些基本的代码帮助,每次使用变量program_controls添加按钮列表以存储在数组中时,我都尝试使用变量self.add_programs的值创建一个新列表。

When I try this: 当我尝试这个:

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

It give me the error: IndexError: list index out of range 它给我错误:IndexError:列表索引超出范围

The error are jumping on this line: 错误在此行上跳跃:

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

Here is the code: 这是代码:

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)

Can you please help me how I can store the buttons in the arrays in each time when I add a list of buttons? 您能帮我每次添加按钮列表时如何将按钮存储在数组中吗?

If that is possible, please let me know. 如果可以的话,请告诉我。

If you do mylist[3].append() you're trying to append to a list that's the 4th item in your mylist . 如果您执行mylist[3].append() ,则尝试追加到mylist You could also write this as (mylist[3]).append() to make this more clear. 您也可以将其写为(mylist[3]).append()以使其更加清楚。

If you want to append to mylist , you need to just use mylist.append() . 如果要追加到mylist ,则只需使用mylist.append() If you want to set it on a certain index, you can use list.insert(index, item) ; 如果要在某个索引上设置它,可以使用list.insert(index, item) ; however, if the list is not as long as index , it'll just be appended at the end. 但是,如果列表的长度不如index ,则将其附加在末尾。

If you want to use specific keys, use a dict() instead: 如果要使用特定键,请改用dict()

mydict = {}
dict[3] = my_item

In your case, I'd just use self.add_programs.append() however. 在您的情况下,我只是使用self.add_programs.append()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM