如何按下一个键?

时间:2018-09-25 11:20:29

标签: python python-3.x

曾经使用pyautogui模块来完成我的大多数事情,但是遇到了一个问题:

我不能按住键一定时间。

有人知道任何可以执行此操作的模块,或者有解决方案而不下载任何模块吗? 例如(对我而言完美):

我说了算,然后运行我的代码。字应该只是在接收(w按下),而w则缓慢增加-(保持一会儿后半秒增加5)。

1 个答案:

答案 0 :(得分:3)

您可以使用以下示例:

>>> pyautogui.keyDown('shift')  # hold down the shift key
>>> pyautogui.press('left')     # press the left arrow key
>>> pyautogui.press('left')     # press the left arrow key
>>> pyautogui.press('left')     # press the left arrow key
>>> pyautogui.keyUp('shift')    # release the shift key

在您的情况下,您将使用keyDown函数和计时器或等效开关来触发keyUp

您可以在线程库中找到有关使用计时器here或更好地使用Timer的更多信息-特别是如果您希望继续进行处理。

下面使用threading.Timer的示例。

def hello():
    print("hello, world")

t = Timer(30.0, hello)
t.start()  # after 30 seconds, "hello, world" will be printed

keyDown文档中,您可以注意以下内容:

  

注意:由于某种原因,这似乎不会导致重复输入,例如   如果在文本字段上按住键盘键,就会发生这种情况。

使用keyDown函数的另一种方法是重复press函数;在keyDown不满足开发人员和/或用户要求的行为的情况下。

def hold_key(key, hold_time):
    import time, pyautogui

    start_time = time.time()

    while time.time() - start_time < hold_time:
        pyautogui.press(key)

import pyautogui

while True:
    pyautogui.press('w')

上面的代码未经测试。