【发布时间】:2017-07-09 21:48:21
【问题描述】:
我正在编写一个简单的小游戏来熟悉 Python 和 Tkinter。我有一个按钮让玩家轮到他们,但我不知道如何让计算机轮到他们。
这将使计算机轮到它,但直到deal() 返回时才更新 lbl_btn 上的文本,这意味着我永远看不到人类打出的牌:
lbl_btn = Button(root, textvariable=varCard, command=lambda: slap()).pack()
deal_btn = Button(root, text="deal", command=lambda: deal()).pack()
def deal():
varTurn.get() % 2 == 0
pile.append(human.deck[0])
human.deck.remove(human.deck[0])
update_label()
root.after(2000)
pile.append(compy.deck[0])
compy.deck.remove(compy.deck[0])
update_label()
def update_label():
varTurn.set(varTurn.get()+1)
print(pile[len(pile)-1].name)
varCard.set(pile[len(pile)-1].name)
此版本的deal() 在每次单击按钮后显示正确的标签,但不是最佳的,因为轮到计算机需要单独单击:
def deal():
if varTurn.get() % 2 == 0:
pile.append(human.deck[0])
human.deck.remove(human.deck[0])
else:
pile.append(compy.deck[0])
compy.deck.remove(compy.deck[0])
varTurn.set(varTurn.get()+1)
print(pile[len(pile)-1].name)
varCard.set(pile[len(pile)-1].name)
我知道标签按钮在我的 lambda 完成之前不会更新,但在这种情况下,如何在延迟后创建对 deal 的单独调用,这将导致更新 lbl_btn 的值?
【问题讨论】: