1

我正在研究一段 GUIzero 代码,旨在将 2D 数组的值附加到选择的文本框小部件上。然而,尽管小部件值方程中的所有变量都被强制为字符串,但它仍然告诉我一个值是一个整数。

    leaderboard_array = ["***", 0]*5
    leaderboard_box1 = Text(leaderboard_window)
    leaderboard_box1.value = str(str(leaderboard_array[0][0]) + ": " + str(leaderboard_array[0][1]))
    leaderboard_box2 = Text(leaderboard_window)
    leaderboard_box2.value = str(str(leaderboard_array[1][0]) + ": " + str(leaderboard_array[1][1]))
    leaderboard_box3 = Text(leaderboard_window)
    leaderboard_box3.value = str(str(leaderboard_array[2][0]) + ": " + str(leaderboard_array[2][1]))
    leaderboard_box4 = Text(leaderboard_window)
    leaderboard_box4.value = str(str(leaderboard_array[3][0]) + ": " + str(leaderboard_array[3][1]))
    leaderboard_box5 = Text(leaderboard_window)
    leaderboard_box5.value = str(str(leaderboard_array[4][0]) + ": " + str(leaderboard_array[4][1]))

确切的错误代码是这样的: leaderboard_box2.value = str(str(leaderboard_array[1][0]) + ": " + str(leaderboard_array[1][1])) TypeError: 'int' object is not subscriptable

4

2 回答 2

1

leaderboard_array[1][0]正在索引的第二个项目leaderboard_array是 a 0(它是 a int)。我认为您的意思是让排行榜数组成为一个包含更多列表的列表,您可以通过leaderboard_array = [["***", 0]] * 5使用两组 []替换第 1 行来获得

于 2021-08-31T15:02:07.643 回答
0

根据您的问题,错误似乎来自此行:

leaderboard_box2.value = str(str(leaderboard_array[1][0]) + ": " + str(leaderboard_array[1][1]))

错误在于,当您调用 leaderboard_array[1] 时,排行榜数组的第一个索引位置的值是某种整数。在您的代码中,通过调用:

leaderboard_array[1][1]
# or
leaderboard_array[1][0]

您正在尝试索引一个整数,这是不可能的。我建议打印出 leaderboard_array[1] 的含义,以便更好地了解为什么会发生此错误。

于 2021-08-31T14:59:52.483 回答