Comments 8
Нужно заменить
if event == mouse.Events.Scroll or mouse.Events.Click:
на
if event in (mouse.Events.Scroll, mouse.Events.Click):
тогда будут учитываться только эти события
if event == mouse.Events.Scroll or mouse.Events.Click:
на
if event in (mouse.Events.Scroll, mouse.Events.Click):
тогда будут учитываться только эти события
Можно использовать стандартную функцию WInAPI GetLastInputInfo — время, прошедшее с момента последней пользовательской активности (нажатие кнопок мыши, клавиатуры и тд.) Это лучше, чем ловить отдельные события.
но такое поведение я объяснить не могу
Когда автор писал:
if event == mouse.Events.Scroll or mouse.Events.Click
, он, вероятно, имел ввиду:
if (event == mouse.Events.Scroll) or (event == mouse.Events.Click)
По-факту же он получил:
if (event == mouse.Events.Scroll) or mouse.Events.Click
Этот if срабатывает всегда, потому что mouse.Events.Click, будучи преобразован в bool, дает True:
>>> bool(mouse.Events.Click)
True
Смотрим на цикл уровнем выше:
for event in events
Если в списке events есть хоть что-то, то начинает выполняться нижеследующий код, в нем срабатывает (всегда) if и «делается половина громкости». Это ошибка уровня «детский сад, начальная группа», даже странно видеть ее после всего этого бойкого разруливания зависимостей и cmake-ов. Автор параллельно с Питоном использует другой язык (какой?), в котором операторы сравнения работают именно так?
В ваших словах есть доля логики (по работе приходится использовать различные языки и тяжело с одного на другой переходить плюс невнимательность — про скобки не заметил), поэтому поправил код на просто — если есть любое событие мыши, тогда выполняйся.
Но
Проверяю —
Что-то всё равно не так.
Но
mouse.Events.Click, будучи преобразован в bool, дает True:
Проверяю —
Что-то всё равно не так.
Вероятно, то, что вы сравниваете объект (экземпляр класса) с самим классом, либо же (я не знаю, как там оно у них внутри реализовано), если event заодно содержит в себе информацию о событии, то вы сравниваете его с неким пустым объектом, и они не равны. Например, работает, если сделать вот так:
В документации на pynput показано, как то же самое сделать через коллбэки.
from pynput import mouse
with mouse.Events() as events:
for event in events:
if type(event) == mouse.Events.Scroll:
print("Scroll")
elif type(event) == mouse.Events.Click:
print("Click")
elif type(event) == mouse.Events.Move:
print("Move")
В документации на pynput показано, как то же самое сделать через коллбэки.
А был бы ТС пользователем ПК, а не геймером, никаких пытхонов ему бы использовать не пришлось!
Для этого хватило бы работающего в фоне баш-скрипта, использующего xdotool!!!
Для этого хватило бы работающего в фоне баш-скрипта, использующего xdotool!!!
Что-то вы немного ошиблись.
1. Разработка шла под Windows (даже специальный хаб для статьи выбран), поэтому xdotool/bash не совсем корректны тут. Есть куча приложений для автоматизации работы с мышью и на Windows в виде отдельных приложений, но вы видимо не совсем поняли смысл статьи.
2.
3. Перечисленные вами инструменты не помогут мне взять и распознать лицо на веб-камере.
1. Разработка шла под Windows (даже специальный хаб для статьи выбран), поэтому xdotool/bash не совсем корректны тут. Есть куча приложений для автоматизации работы с мышью и на Windows в виде отдельных приложений, но вы видимо не совсем поняли смысл статьи.
2.
а не геймеромЕсли вы про использование GeForce Experience, то это хороший инструмент для записи экрана, причем идёт стандартно вместе с драйверами на видеокарту.
3. Перечисленные вами инструменты не помогут мне взять и распознать лицо на веб-камере.
Sign up to leave a comment.
Управляем звуком ПК от активности пользователя с помощью Python