我正在尝试制作一个程序,以便当我按下游戏板上的按钮并按住它时,只要按住按钮,就会写入并重复某个字符,就像键盘一样。
到目前为止,我已经成功地插入了我想要的任何字符,但最困难的部分是按住它。
我尝试使用 pyGame、win32api、win32con,但找不到任何有用的东西。(也许我对这些库没有完全了解)
此外,在 python 编程方面,我是一个菜鸟,所以如果您需要额外的信息来让我的问题更容易理解,请告诉我。
谢谢你。
我正在尝试制作一个程序,以便当我按下游戏板上的按钮并按住它时,只要按住按钮,就会写入并重复某个字符,就像键盘一样。
到目前为止,我已经成功地插入了我想要的任何字符,但最困难的部分是按住它。
我尝试使用 pyGame、win32api、win32con,但找不到任何有用的东西。(也许我对这些库没有完全了解)
此外,在 python 编程方面,我是一个菜鸟,所以如果您需要额外的信息来让我的问题更容易理解,请告诉我。
谢谢你。
对于 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()