Python tkinter for循环未正确显示
制作21点游戏时,此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)
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循环将快速遍历所有卡片,以至于您无法看到它们的显示,然后在下一次遍历循环时将其删除。这里没有足够的信息来帮助你猜测,但是如果“第一张牌”是第一次和第三次调用此循环时玩家卡中的最后一张牌,那么它将显示两次。