Есть ли функция для проверки, нажимаю ли я что-нибудь на любом экране на Python? - PullRequest
0 голосов
/ 26 апреля 2019

Я создал код для игры под названием Transformice. Я хочу использовать функцию, которая проверяет, нажимаю ли я что-то (например, «esc») внутри игры, и завершает программу.

Все функции, о которых я читал, требовали, чтобы я нажимал букву на консоли, но я хочу нажать ее, пока я играю в игру, и моя программа обнаруживает это. Это возможно (как?)?

from pyautogui import typewrite, locateOnScreen
from time import sleep

while(True):
    img_controle = locateOnScreen('Screenshot_1.PNG', confidence = 0.7)

    if img_controle:
        typewrite(['enter', 'up', 'up', 'enter'], interval = 0.05)
        typewrite(['enter', 'up', 'up', 'enter'], interval = 0.05)
        img_controle = None
        sleep(5)

1 Ответ

0 голосов
/ 26 апреля 2019

Вместо «esc» вы можете использовать другую клавишу, например «q», для выхода. Тогда можно использовать следующий код:

import win32api as wapi

keyList = ["\b"]
for char in "ABCDEFGHIJKLMNOPQRSTUVWXYZ 123456789,.'£$/\\":
    keyList.append(char)

def key_check():
    keys = []
    for key in keyList:
        if wapi.GetAsyncKeyState(ord(key)):
            keys.append(key)
    return keys

key_check () вернет список всех нажатых клавиш во время выполнения функции.

Просто периодически вызывайте эту функцию (скажем, в каждом игровом цикле) и проверяйте с помощью:

if 'q' in key_check():
    # whatever action I want to do

Исходный код взят из: https://github.com/Sentdex/pygta5/blob/master/getkeys.py

...