簡體   English   中英

如何在Windows上的Python中生成鍵按住事件

[英]How to generate a key hold & press event in Python on Windows

我正在嘗試編寫一個程序,以便當我按住游戲板上的按鈕並按住它時,只要按住按鈕,就可以編寫並重復某個字符,就像鍵盤一樣。

到現在為止,我已經設法插入了我想要的任何字符,但是困難的部分是保持按下狀態。

我嘗試使用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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM