繁体   English   中英

pygame 按键检测未检测到按键

[英]pygame key detect not detecting keypresses

我试图让 pygame 检测我的按键并将背景更改为随机颜色,但每次按下所选键时,没有任何变化。 window 的背景颜色保持不变。


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()

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

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

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


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% 的速度烧毁中央处理器)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM