曾经使用pyautogui模块来完成我的大多数事情,但是遇到了一个问题:
我不能按住键一定时间。
有人知道任何可以执行此操作的模块,或者有解决方案而不下载任何模块吗? 例如(对我而言完美):
我说了算,然后运行我的代码。字应该只是在接收(w按下),而w则缓慢增加-(保持一会儿后半秒增加5)。
答案 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')
上面的代码未经测试。