@Afafks123132132165

Как отследить нажатие 1 раз?

Я написал скрипт, считывающий координаты мыши при нажатии на кнопку и записывающий в файл. И использовал для этого keyboard и pyautogui. Но в цикле, когда я нажимаю на клавишу, то в файл записываются координаты много раз. Как это исправить?
  • Вопрос задан
  • 294 просмотра
Решения вопроса 2
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Почитайте документацию - и используйте хотя бы keyboard.hook вместо keyboard.is_pressed
Ответ написан
Комментировать
sanya84
@sanya84
Фанатик Python 3
Опытным путём установил что что у меня реакция не как у Джет-а Ли) получается что пока кнопка нажата вызывается эта функция keyboard.is_pressed и с не очень маленькой скоростью поэтому у вас в файл и записывается много значений как вариант могу предложить следущий код с использованием задержки что бы вы успевали отпустить клавишу
from time import sleep
import pyautogui
import keyboard

ENTER = "enter"
ESCAPE = "escape"

def writing_data_file():
    if keyboard.is_pressed(ENTER):
        sleep(0.5)
        cursor_position = pyautogui.position()
        print(cursor_position)
        with open("cursor_position.txt", "a") as file:
            file.write("{0}\n".format(cursor_position))
    if keyboard.is_pressed(ESCAPE):
        quit()

while True:
    writing_data_file()

А так решений можно много найти, просто не совсем понятно с какой частотой вам нужна позиция курсора)
И да как посоветовал Владимир Куц читайте документацию перед использованием библиотек
А то я пока экспериментировал чуть HDD не форматнул))))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы