我正在尝试制作一个程序,以便当我按下游戏手柄上的按钮并按住它时,只要我按住按钮就会写入并重复某个角色,就像键盘一样。
到目前为止,我已经设法插入了我想要的任何角色,但困难的部分是保持按下。
我尝试使用pyGame,win32api,win32con,但我找不到任何有用的东西。 (也许我没有完全理解这些库)
此外,我是python编程的新手,所以如果你需要额外的信息来让我的问题更容易理解,请告诉你。
谢谢。
答案 0 :(得分: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()