使函数定期执行

2024-09-28 22:32:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个简单的项目,我需要一点帮助。我创建了一个在画布上画圆圈的程序。圆圈是蓝色的,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()

Tags: andselfifcountbluewinelsepoint
1条回答
网友
1楼 · 发布于 2024-09-28 22:32:51

好吧,你可以试试这个: 把它放在代码的开头import time 然后,在任何需要延迟的地方,可以使用这个:time.sleep(number of seconds) 您可以通过键入秒数0.1或其他值来包含毫秒 如果你想让它每隔几秒钟重复一次,你就这样做

while True:
    flash(self,count) #replace self and count with whatever you want
    time.sleep(x) #replace x with amount of seconds, this part is optional though.

while True:使其循环,而True == True也就是永远循环。如果你只想让它循环一定的次数,可以这样做

^{pr2}$

我希望这对你有意义,我能帮上忙。如果有任何错误,请纠正我

相关问题 更多 >