Как нажать клавишу? - PullRequest
       21

Как нажать клавишу?

0 голосов
/ 25 сентября 2018

Я использовал модуль pyautogui для выполнения большинства моих задач, но я столкнулся с одной проблемой:

Я не могу удерживать клавишу в течение определенного периода времени.

Кто-нибудьзнаете какие-нибудь модули, которые могут это сделать, или есть решение без загрузки каких-либо модулей?Например (идеально подходит для меня):

Я ввожу слово и запускаю свой код.Слово должно только получить (w нажал), с w медленно увеличивается - (через некоторое время удержание добавляет как 5 с половиной секунд).

1 Ответ

0 голосов
/ 25 сентября 2018

Вы можете использовать следующий пример:

>>> 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.

Вы можетенайдите больше информации относительно использования таймеров здесь или, что еще лучше, используйте Таймер из библиотеки потоков - особенно, если вы хотите, чтобы обработка продолжалась.

Пример использования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')

Приведенный выше код не тестировался.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...