2013-05-13 92 views
1

我正在嘗試製作一個程序,以便當我按住遊戲板上的按鈕並按住它時,只要持有某個字符就會被寫入並重覆按鈕,就像鍵盤一樣。到目前爲止,我已經設法插入任何我想要的角色,但最困難的部分是保持按下。如何在Windows上使用Python生成密鑰保持和按下事件

我試過使用pyGame,win32api,win32con,但是我找不到任何有用的東西。 (也許我沒有對這些庫有完整的瞭解)

此外,當談到python編程時,我是一個新手,所以如果你需要額外的信息來使我的問題更容易理解,請告訴我。

謝謝。

回答

1

對於pygame的試試這個: http://www.pygame.org/docs/ref/key.html#pygame.key.set_repeat

我看來,像正是你要尋找的。

如果你不想這樣解決,你將不得不編寫一個線程,該線程從關鍵事件開始,停止在關鍵釋放事件上並在調用關鍵事件時反覆調用自身。這看起來有點像這樣:

from threading import Thread, Event 
from time import sleep 

class BtnRepeater(Thread) 
    def __init__(self, *args, **kw): 
     self.stop = Event() 
     if 'startdelay' in kw: 
      self.stdelay = kw.pop('startdelay') 
     else: 
      self.stdelay = 1 default delay 
     if 'repeatdelay' in kw: 
      self.rpdelay = kw.pop('startdelay') 
     else: 
      self.rpdelay = 0.2 default delay 

     Thead.__init__(self, *args, **kw) 

    def run(self): 
     sleep(self.stdelay) 
     while not self.stop.is_set(): 
      # invoke event here 
      sleep(self.rpdelay) 

def event_handler_btn_down(event): 
    # needs to be binded somewhen 
    br = BtnRepeater() 
    bind(event.key,'key_release',br.stop.set) # this is no real pygame call - but you probably know what I'm talking about 
    br.start()