2017-08-08 49 views
1

我在python 2.7中使用pygame和pyautogui在屏幕上移動鼠標。我的代碼如下所示:按住pygame

import pyautogui 
    import pygame 
    pygame.init() 
    pygame.display.set_mode() 
    loop = True 
    while loop: 

     for event in pygame.event.get(): 
       if event.type == pygame.quit: 
        pygame.quit() 
       if event.type == pygame.KEYDOWN: 
        if event.key == pygame.K_a: 
         pyautogui.moveRel(-50,0) 

我的代碼時,我按下「A」,但我不得不反覆按按鈕時,我想在屏幕上移動鼠標移動鼠標到左邊。有沒有辦法可以按住並在屏幕上移動鼠標?我已經看過關於這個主題的其他教程,但他們似乎非常具體項目。

回答

2

基本上,你想要做的就是設置一個變量,指出keyydown上的密鑰是否已關閉,並在密鑰啓動後進行更新。

在這裏,我更新了你的代碼,以做到這一點,因爲它可能更容易理解。

import pyautogui 
import pygame 
loop = True 

a_key_down = False         # Added variable 
while loop: 

    for event in pygame.event.get(): 
      if event.type == pygame.quit: 
       pygame.quit() 
      if event.type == pygame.KEYDOWN: 
       if event.key == pygame.K_a: 
        a_key_down = True     # Replaced keydown code with this 
      if event.type == pygame.KEYUP:   # Added keyup 
       if event.key == pygame.K_a: 
        a_key_down = False     
    if a_key_down:         # Added to check if key is down 
     pyautogui.moveRel(-50,0) 
+1

我想你想把'如果a_key_down'放在while循環中,而不是在pygame.event.get()中的'for event中。否則,它會根據事件的數量引起移動。當然,這種改變仍然會使得運動依賴於遊戲循環速率,並且我相信這是OP需要處理的事情... –

+0

@MarkHildreth是的,你是對的。 – Martin