我怎样才能让我的程序等待输入,而不是在循环中

Posted

技术标签:

【中文标题】我怎样才能让我的程序等待输入,而不是在循环中【英文标题】:How can I have my program wait for input, without being in a loop 【发布时间】:2013-03-10 20:04:35 【问题描述】:

我正在编写一个 Pygame 程序,它需要用户输入来编写音乐。它等待特定事件(即键盘或鼠标输入)并立即分析输入,而无需用户在每次输入时按 Enter。

while (running == 1):
    for event in pygame.event.get():
# If event is a keypress
        if(event.type == pygame.KEYDOWN):
            key = pygame.key.get_pressed()  # get_pressed returns an boolean array
                                            # of every key showing pressed or not
# Find which key is pressed
            for x in range(len(key)):
                if(key[x] == 1):
                    break
# If a number key is pressed (0-9)
            if(x >= 48 and x <=57):
# Set the octave to keypress
                gui.setOctave(x-48)    # gui is an instance of a class 
                                       # that controlls pygame display

我知道这样做的唯一方法是使用无限 while 循环。但是,这几乎占用了所有 CPU 资源来运行。是否有另一种不使用循环的有效方法来解决这个问题?

【问题讨论】:

【参考方案1】:

您可以使用event = pygame.event.wait() 等待事件。

【讨论】:

对不起,我是新手。谢谢你告诉我。

以上是关于我怎样才能让我的程序等待输入,而不是在循环中的主要内容,如果未能解决你的问题,请参考以下文章

我怎样才能让我的 caroutine 每 x 秒运行一次

我怎样才能让我的应用程序总是从第二个视图开始?

我怎样才能让这个重复而不被卡在无效输入上?

我怎样才能让我的背景色填充我的所有内容,即使是水平滚动?

强制浏览器下载视频,而不是在 html 中打开 [重复]

等待没有循环Python的条件