python - 标签出现缓冲,但 Python 代码运行时未缓冲
问题描述
我目前正在 Sublime Text 上使用 Python3 创建一个二十一点游戏。当庄家一张一张地抽牌时,您可以在控制台中看到它是一张一张地抽牌,使用after()
调用不同的函数,但在实际的 GUI 中,所有牌都是同时出现的,就在最后。
以下是部分代码:
def d_pick_a_card():
global d_hand
global card
global deck
global d_counter
global cvpath
global cardvalue
global d_card_relx
global cv
cardvalue = 0
card = deck.pop(0)
print('Drew',card)
if card == 'J':
cardvalue = 10
cvpath = 11
elif card == 'Q':
cardvalue = 10
cvpath = 12
elif card == 'K':
cardvalue = 10
cvpath = 13
elif card == 'A':
cardvalue = 11
cvpath = 14
else:
cardvalue = card
cvpath = card
d_hand.append(cardvalue)
random.shuffle(deck)
random.shuffle(deck)
d_counter += 1
#THIS IS THE FUNCTION THAT SHOWS THE VISUAL CARD ON THE GUI
def d_pick_vis(cardvalue, d_counter):
global dealers_turn
global card_frame
card_frame = tk.Label(top, image = cv[cvpath])
card_frame.place(relx= d_card_relx[d_counter], rely=.18, anchor='center')
widgetList.append(card_frame)
def dturnfunc():
global dealersturn_img
holding_img1.pack_forget()
dealersturn_img = tk.Label(top, image = dealersturn)
dealersturn_img.img = dealersturnpath
dealersturn_img.pack()
top.after(500, dealers_turn())
def dealers_turn():
global cardvalue
global d_counter
d_pick_a_card()
d_pick_vis(cardvalue, d_counter)
print("The Dealers hand is:", sum(d_hand))
print('\n')
if sum(d_hand) <= sum(hand):
print('Dealer picks again')
top.after(500,dealers_turn_2())
elif sum(d_hand) == 21:
print('Dealer Wins')
elif sum(d_hand) >= 22:
print('You win!')
else:
print('Dealer Wins')
解决方案
您正在调用 to 中的函数after()
,而不是这样做:
top.after(500, dealers_turn) # Note: just pass in the name of the function
...
top.after(500, dealers_turn_2)
您需要传入对该函数的引用,并在时间过去后将该after()
函数传递给该函数。call
当你自己调用函数时,你传入了返回值,None
我猜这可能是after()
忽略的。
推荐阅读
- r - 根据范围填充面板数据集中缺失的行
- typescript - MobX:动作注释的方法未定义
- javascript - jquery 不在 IE、EDGE 和 FIREFOX 中工作,但在 CHROME 中工作
- android - 库升级到 1.1.3 后 ConstraintLayout 崩溃
- php - 如何在没有嵌套foreach循环的情况下基于键值对组合两个多维数组?
- c# - 在 Asp.Net Web Api 的 EntityFramework 中更新之前查找表对象实体以获取列的当前值
- java - 线程“主”java.lang.NoClassDefFoundError 中的异常:org/apache/commons/lang/builder/CompareToBuilder
- android - 如何在ffmpeg中合并音频和两个视频文件?
- java - 如何读取 java 类中的运行时变量?
- python - 关于在循环中添加字符的问题