1

我正在尝试制作一个程序,以便当我按下游戏板上的按钮并按住它时,只要按住按钮,就会写入并重复某个字符,就像键盘一样。

到目前为止,我已经成功地插入了我想要的任何字符,但最困难的部分是按住它。

我尝试使用 pyGame、win32api、win32con,但找不到任何有用的东西。(也许我对这些库没有完全了解)

此外,在 python 编程方面,我是一个菜鸟,所以如果您需要额外的信息来让我的问题更容易理解,请告诉我。

谢谢你。

4

1 回答 1

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()
于 2013-05-13T18:40:03.650 回答