我正在用Tkinter编写一个乒乓球游戏,但我在fen.after函数上遇到了一个问题。
下面是我的代码:
if xballe2 >= largeur - epaisseur_barre and 0 <= yballe2 <= ypopo1:
xballe1, yballe1, xballe2, yballe2 = largeur/2 - rayon, hauteur/2 - rayon, largeur/2 + rayon, hauteur/2 + rayon #the ball goes in the middle of the canvas
fen.after(1000) #wait 1 sec before redefine its values
alpha = uniform(0, 2*pi)
Vx = V * cos(alpha)
Vy = V * sin(alpha)
toto += 1
score1.configure(text = toto) 我想在球重新开始前等待1秒。在这一点上球已经在中间。但实际情况恰恰相反: python在重新定义中间的球之前等待1秒。
为什么我的代码不能工作?
发布于 2016-05-21 00:51:11
*.after()方法用于启动计时器,该计时器将在经过一定时间后运行代码。它会立即返回。如果您想在您的程序中引入延迟,这里有几种方法--由于我没有足够的代码来测试它们,这些都是概念性的方法,您可能需要做更多的工作才能使它们工作:
概念性方法#1
def cleanup_frame()
alpha = uniform(0, 2*pi)
Vx = V * cos(alpha)
Vy = V * sin(alpha)
toto += 1
score1.configure(text = toto)
if xballe2 >= largeur - epaisseur_barre and 0 <= yballe2 <= ypopo1:
xballe1, yballe1, xballe2, yballe2 = largeur/2 - rayon, hauteur/2 - rayon, largeur/2 + rayon, hauteur/2 + rayon #the ball goes in the middle of the canvas
fen.after(1000, cleanup_frame) # wait 1 sec before redefine its values 概念性方法#2
import time
if xballe2 >= largeur - epaisseur_barre and 0 <= yballe2 <= ypopo1:
xballe1, yballe1, xballe2, yballe2 = largeur/2 - rayon, hauteur/2 - rayon, largeur/2 + rayon, hauteur/2 + rayon #the ball goes in the middle of the canvas
time.sleep(1) # wait 1 sec before redefine its values
alpha = uniform(0, 2*pi)
Vx = V * cos(alpha)
Vy = V * sin(alpha)
toto += 1
score1.configure(text = toto) https://stackoverflow.com/questions/37350574
复制相似问题