我正在写一个简单的小游戏来熟悉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()
在每次单击按钮后都会显示正确的标签,但不是最佳的,因为计算机的转弯需要单独的单击:
我知道label按钮在lambda完成之前不会更新,但是在这种情况下,如何在导致更新lbl_btn
值的延迟之后创建对deal
的单独调用?在
如果我理解你的要求,你可能在找Tk.update()。如果你打电话根目录更新()就在前面根。后(2000),这将执行强制刷新并使Tkinter更新UI。在
例如(我修改了您的代码):
这将导致在绘制新卡后立即刷新顶部按钮文本。请注意,这最终可能不是实现游戏的最佳方式,因为即使按钮更新以显示新卡,GUI也会在等待deal()函数完成时无响应。在
相关问题 更多 >
编程相关推荐