Python tkinter for循环未正确显示

Python tkinter for循环未正确显示,python,graphics,tkinter,pycharm,Python,Graphics,Tkinter,Pycharm,制作21点游戏时,此for循环未打印正确的卡。它可以打印第一张卡和第二张卡,但是当它打印到第三张卡时,它会在第三张卡的位置上重新打印第一张卡。在打印之前,我尝试过删除和不删除图像,但都没有成功 if len(playerCards) > 0: for i in range(len(playerCards)): #print(currentHand[i]) #print currentHand #print(i)

制作21点游戏时,此for循环未打印正确的卡。它可以打印第一张卡和第二张卡,但是当它打印到第三张卡时,它会在第三张卡的位置上重新打印第一张卡。在打印之前,我尝试过删除和不删除图像,但都没有成功

if len(playerCards) > 0:  
    for i in range(len(playerCards)):  
        #print(currentHand[i])  
        #print currentHand  
        #print(i)  
        #print(playerCards[i])  
        GAME_CANVAS._tkcanvas.delete("pCard" + str(i))  
        GAME_CANVAS._tkcanvas.create_image(125+((i-1)*80), 75, image = playerCards[i].image, tag = "pCard" + str(i))

我对当前的print语句进行了注释,因为它们不应以任何方式影响代码。

我无法判断程序的
tkinter
部分有什么问题,但我可以告诉您,通过使用。在enumerate(PlayerCards)中,将前两行替换为i的
,卡片:
,然后在循环中使用
卡片
,而不是
PlayerCards[i]
。这将为您节省一层缩进,并(可能)在循环中节省大量的
[]
索引。实际上,只有playerCards中的最后一个图像才会显示。for循环将快速遍历所有卡片,以至于您无法看到它们的显示,然后在下一次遍历循环时将其删除。这里没有足够的信息来帮助你猜测,但是如果“第一张牌”是第一次和第三次调用此循环时玩家卡中的最后一张牌,那么它将显示两次。