#python #pynput
#python #pynput
Вопрос:
Я хотел создать скрипт, который воспроизводит звук после нажатия Z и следующей кнопки мыши, но у меня есть 2 проблемы
1. скрипт не обнаруживает щелчки мыши.
- у меня такая ошибка: File «c:/Users/name/OneDrive/Pulpit/python/apexretards.py «, строка 14, в on_press при нажатии == «yes»: UnboundLocalError: локальная переменная «нажата», на которую ссылаются перед назначением
Скрипт:
from pynput.keyboard import Key, Listener
from playsound import playsound
pressed = "no"
def on_click(x, y, button, pressed):
print("click")
if pressed == "yes":
playsound("skibidiba.mp3")
pass
def on_press(key):
if str(key) == "'z'" or str(key) == "'Z'":
if pressed == "yes":
pressed = "no"
return
else:
pressed = "yes"
return
def on_release(key):
print("no u")
with Listener(on_click=on_click, on_press=on_press, on_release=on_release) as listener:
listener.join()
Комментарии:
1.
on_press
не имеет ссылки на pressed . Вам нужно либо передать ее, либо сделать ее глобальной2. Параметр, нажатый в on_click, является логическим значением (True или False). И у вас есть дополнительные кавычки вокруг z и Z. Будьте осторожны, чтобы не использовать одни и те же имена для разных целей (нажата)
3. Вы должны задавать только один вопрос за сообщение. Ваша вторая проблема заключается в том, что
global pressed
она должна быть объявлена в любой функции, использующей глобальную переменнуюpressed
. Ваша первая проблема, щелчки не обнаружены, неясна.print("click")
Выполняется? Я вижу, вы проверяетеif pressed == "yes":
, вы увереныpressed
, что в этом случае будет логическое значение? Поскольку вы используете ее в качестве аргумента этой функции, она не будет использовать значениеpressed
объявленной вами глобальной переменной, то есть она будет иметь только то значение, котороеListener
ей присвоено. Вы должны дважды проверить это значение.4. я исправил проблему 2, но да, она не печатает «щелчок». он печатает щелчок, когда я удаляю on_press и on_release