首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pygam键检测未检测到按键

Pygam键检测未检测到按键
EN

Stack Overflow用户
提问于 2019-11-16 00:44:09
回答 1查看 27关注 0票数 0

我试图让pygame检测我的按键,并将背景更改为随机颜色,但每次按下选定的键时,什么都不会改变。窗口的背景颜色保持不变。

代码语言:javascript
复制
import pygame
import random

running = True
while running:
  for event in pygame.event.get():
    if event.type == pygame.QUIT:
      running = False
detect=True
keys=pygame.key.get_pressed()
while detect:
  pygame.event.pump()
  keys = pygame.key.get_pressed()
  if keys[pygame.K_0]:
    screen.fill((random.randint(0, 255)), (random.randint(0, 255)), (random.randint(0, 255)))
    pygame.display.update()
  if keys[pygame.K_1]:
    screen.fill((random.randint(0, 255)), (random.randint(0, 255)), (random.randint(0, 255)))
    pygame.display.update()
EN

回答 1

Stack Overflow用户

发布于 2019-11-16 00:57:00

这里的问题是,程序永远不会到达代码的后半部分。

第一个while True语句一直在运行,它对屏幕没有任何影响,但等待用户关闭窗口-检测按键的代码只在接收到pygame.QUIT事件时执行(然后窗口关闭)。

程序的工作方式是运行一个循环,其中包含所有语句-- while循环不会并行运行--你必须这样做:

代码语言:javascript
复制
import pygame
import random

running = True

screen = pygame.display.set_mode((800, 600))

while running:
    pygame.event.pump()
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    keys = pygame.key.get_pressed()
    if keys[pygame.K_0]:
        screen.fill((random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)))
        pygame.display.update()
    if keys[pygame.K_1]:
        screen.fill((random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)))
        pygame.display.update()
    pygame.time.delay(30)

pygame.quit()

(还要注意对"pygame.time.delay“的调用,否则while循环将使用所有的CPU资源运行,试图以比事件到达时更快的速度获取事件,并且什么也不做--您的简单示例将消耗100%cpu)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58881346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档