GUIzero:“'int' 对象不可订阅”,变量被强制为字符串

GUIzero: "'int' object is not subscriptable" with variables that are forced to be strings

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

    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])) 类型错误:'int' 对象不可订阅

根据你的问题,错误似乎来自这一行:

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] 是什么,以便更好地了解为什么会发生此错误。

leaderboard_array[1][0] 正在索引 leaderboard_array 的第二项,即 0(即 int)。我想你的意思是让排行榜数组成为一个包含更多列表的列表,你可以通过使用两组 []

将第 1 行替换为 leaderboard_array = [["***", 0]] * 5 来获得