不能在按下python键的同时移动鼠标?

2024-09-27 07:30:59 发布

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

我需要能够在处理按键事件时移动鼠标。在

我该怎么做?在

下面是我现在使用的基本代码:

import pygame, sys
from pygame.locals import *

pygame.init()

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        if event.type == USEREVENT + 1:
            rotate = True;
        if event.type == KEYDOWN:
            if event.key == K_LEFT or event.key == K_a:
                moveX = -1*moveSpeed
            elif event.key == K_RIGHT or event.key == K_d:
                moveX = moveSpeed
            if event.key == K_DOWN or event.key == K_s:
                moveY = moveSpeed
            elif event.key == K_UP or event.key == K_w:
                moveY = -1*moveSpeed

当下面的脚本正在运行并且我按下一个键时,我不能移动鼠标。。在


Tags: orkeyimporteventtrueiftypesys
1条回答
网友
1楼 · 发布于 2024-09-27 07:30:59

循环的主要问题是“帧”之间没有延迟——也就是说,你只是以最大的CPU速度循环事件循环——这使得按键生成大量(可能意味着大约数百万量级)的按键按下事件被读取。在

所以:

  1. 在wheel循环中插入一个pygame.time.delay(x),其中有x 在15到100之间-这会给你很多 间隔时间毫秒
  2. 在循环中插入一个pygame.event.pump()调用-这将保留事件 缓冲流动,防止细微的不良行为 不同的系统
  3. 这与你的问题无关-但是, 绝对不需要像“-1*moveSpeed”这样的东西来 获取变量的负值-只需使用“-moveSpeed” 相反。在

另外,这应该可以停止冻结,但是pygame只能在它自己的显示窗口中捕捉鼠标或键事件(您没有初始化),您必须调用pygame.display.set_mode才能真正看到一些东西。在

相关问题 更多 >

    热门问题