我正在做一个简单的项目,我需要一点帮助。我创建了一个在画布上画圆圈的程序。圆圈是蓝色的,flash()方法接受随机整数计数,将点亮一个圆并将其颜色更改为黄色。问题是,我希望函数继续每隔一秒执行一次,因为我希望最终能够让程序的用户单击亮起的圆圈,如果用户正确,程序会用对话框来响应正确/错误。到现在为止,我只能让它照亮一个圆圈,这就是它。我尝试使用一个线程,并将其设置为每2秒一次,但这不起作用,或者可能我没有正确地执行某些操作。任何帮助都将不胜感激。在
from graphics import *
from tkinter import *
import random
class App():
def __init__(self):
self.win = GraphWin('Demo2', 400, 300) # give title and dimensions
count = random.randint(1,9)
self.flash(count)
def flash(self,count):
circle1 = Circle(Point(50,30), 25) # set center and radius
circle2 = Circle(Point(110,30), 25)
circle3 = Circle(Point(170,30),25)
circle4 = Circle(Point(50,90),25)
circle5 = Circle(Point(110,90),25)
circle6 = Circle(Point(170,90),25)
circle7 = Circle(Point(50,150),25)
circle8 = Circle(Point(110,150),25)
circle9 = Circle(Point(170,150),25)
circle1.setFill("blue")
circle1.draw(self.win)
circle2.setFill("blue")
circle2.draw(self.win)
circle3.setFill("blue")
circle3.draw(self.win)
circle4.setFill("blue")
circle4.draw(self.win)
circle5.setFill("blue")
circle5.draw(self.win)
circle6.setFill("blue")
circle6.draw(self.win)
circle7.setFill("blue")
circle7.draw(self.win)
circle8.setFill("blue")
circle8.draw(self.win)
circle9.setFill("blue")
circle9.draw(self.win)
if count==1:
circle1.setFill("yellow")
mouseClick = self.win.getMouse()
if mouseClick.y >= 29 and mouseClick.y <= 31 and mouseClick.x >= 49 and mouseClick.x <= 51:
print("Correct")
else:
print("Incorrect")
elif count==2:
circle2.setFill("yellow")
mouseClick = self.win.getMouse()
if mouseClick.y >= 29 and mouseClick.y <= 31 and mouseClick.x >= 109 and mouseClick.x <= 111:
print("Correct")
else:
print("Incorrect")
elif count==3:
circle1.setFill("yellow")
mouseClick = self.win.getMouse()
if mouseClick.y >= 29 and mouseClick.y <= 31 and mouseClick.x >= 169 and mouseClick.x <= 171:
print("Correct")
else:
print("Incorrect")
elif count==4:
circle4.setFill("yellow")
mouseClick = self.win.getMouse()
if mouseClick.y >= 89 and mouseClick.y <= 91 and mouseClick.x >= 49 and mouseClick.x <= 51:
print("Correct")
else:
print("Incorrect")
elif count==5:
circle5.setFill("yellow")
mouseClick = self.win.getMouse()
if mouseClick.y >= 89 and mouseClick.y <= 91 and mouseClick.x >= 109 and mouseClick.x <= 111:
print("Correct")
else:
print("Incorrect")
elif count==6:
circle6.setFill("yellow")
mouseClick = self.win.getMouse()
if mouseClick.y >= 89 and mouseClick.y <= 91 and mouseClick.x >= 169 and mouseClick.x <= 171:
print("Correct")
else:
print("Incorrect")
elif count==7:
circle7.setFill("yellow")
mouseClick = self.win.getMouse()
if mouseClick.y >= 149 and mouseClick.y <= 151 and mouseClick.x >= 49 and mouseClick.x <= 51:
print("Correct")
else:
print("Incorrect")
elif count==8:
circle8.setFill("yellow")
mouseClick = self.win.getMouse()
if mouseClick.y >= 149 and mouseClick.y <= 151 and mouseClick.x >= 109 and mouseClick.x <= 111:
print("Correct")
else:
print("Incorrect")
else:
circle9.setFill("yellow")
mouseClick = self.win.getMouse()
if mouseClick.y >= 149 and mouseClick.y <= 151 and mouseClick.x >= 169 and mouseClick.x <= 171:
print("Correct")
else:
print("Incorrect")
if __name__ == "__main__":
app = App()
app.mainloop()
好吧,你可以试试这个: 把它放在代码的开头
import time
然后,在任何需要延迟的地方,可以使用这个:time.sleep(number of seconds)
您可以通过键入秒数0.1或其他值来包含毫秒 如果你想让它每隔几秒钟重复一次,你就这样做
^{pr2}$while True:
使其循环,而True == True
也就是永远循环。如果你只想让它循环一定的次数,可以这样做我希望这对你有意义,我能帮上忙。如果有任何错误,请纠正我
相关问题 更多 >
编程相关推荐