我在您的代码中看到,您selection[some_index]多次引用。如果您查看实际选择是什么,您会发现它是一个数组,其中包含一个矩形对象:[<rect(200, 450, 400, 60)>]这个矩形永远不会改变,所以我建议通过调用直接引用它selection[0]例如,这是给您错误的代码片段。for i in range (length): if selection[i].collidepoint((mx,my)): # check if x,y of mouse is in a button num = i hover = True因为 selection 是一个包含一个永远不会改变的元素的数组,所以在 for 循环的第一次迭代后会出现 Index out of range 错误。也许这看起来很熟悉:IndexError: list index out of range你可以做些什么来解决这个问题是摆脱循环(因为它是不必要的 - 如果选择列表中只有一个矩形,你不应该循环遍历索引!)并在第 0 个索引处提取矩形。if selection[0].collidepoint((mx,my)): # check if x,y of mouse is in a button num = i hover = True这不是我在您的代码中遇到的唯一错误,但我相信这会对您有所帮助!