如何设置定时器关闭一个功能然后打开另一个功能?[复制]

How to set timer to close one function then open another? [duplicate]

提问人:Douglas Martin 提问时间:11/18/2023 最后编辑:Douglas Martin 更新时间:11/18/2023 访问量:54

问:

这个问题在这里已经有答案了:
Pygame 关卡/菜单状态 (2 个答案)
5天前关闭。

这篇文章在 5 天前被编辑并提交审核,未能重新打开帖子:

原始关闭原因未解决

我只想在一个函数中设置一个 20 秒的计时器,然后跳到另一个:

功能一:

example_gif = gif_pygame.load("giphy (1).gif")
def animatedgif():
    while True:
        example_gif.render(screen, (200 - example_gif.get_width() * 0.5, 150 - example_gif.get_height() * 0.5))
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit();
                sys.exit()
        crt_shader()

功能二:

def first_question():

    while True:

        #screen.fill((255,255,255))
        render_text("Teste Teste",text_font,(255,255,255),0,0)   
        for e in pygame.event.get():
            if e.type == pygame.QUIT:
                quit()
        crt_shader()

我已经尝试过线程 ou 多进程 但我是一个初学者,并不真正理解解释是如何工作的。

或不会工作。毕竟,我希望打开一个功能,而不是像加载屏幕或重复项之类的东西等待。pygame.time.waittime.wait

蟒蛇 皮游戏

评论

0赞 Douglas Martin 11/18/2023
是的,它有效,但不适合我。再读一遍。用户想知道其他形式来做一些他已经用我提到的代码做的事情。显然,ans发誓指的是与我的问题无关的其他问题。
0赞 Rabbid76 11/18/2023
请阅读 如何创建一个最小的、可重复的例子我如何提出一个好问题?
0赞 Charles Duffy 11/18/2023
一般来说,“在计时器上退出函数”不是一个好的设计,你一开始就不应该这样做。研究状态机或事件循环——你现在编写程序的方式是,它不能一次做多件事,甚至不能做像响应菜单点击这样的琐碎事情。一旦你遵循了良好的设计实践,这就不是你遇到的问题。
0赞 Charles Duffy 11/18/2023
也就是说,你可以让你的超时显示为 pygame 事件,当你看到该特定事件时。请参阅 pygame.time 模块,因为副本已经告诉您要这样做;当返回一个用 安排的计时器事件时,将其视为您可以做的事情,这不应该是一个很大的飞跃。returnreturnevent.get()pygame.time.set_timer()
0赞 Charles Duffy 11/18/2023
(还有其他更糟糕的方法可以使函数在计时器上退出,例如发送一个信号,向运行函数的线程抛出异常,但它们是坏主意是有原因的)。

答: 暂无答案