Как определить, какая кнопка была нажата? (Пынпут)

Я пытаюсь определить, какая кнопка мыши была нажата

Так вот мой код:

from pynput.mouse import Listener

def on_click(button, pressed):
   if button.Left and pressed:
       print("You pressed the left mouse button")
   if button.Right and pressed:
       print("You pressed the right mouse button")
       

Так что не было никаких ошибок, но это не работает какие-либо идеи?

Видно, что вы импортируете из пакета под названием pynput, однако в вопросе вы должны более четко указать, какую структуру вы используете.

Federico Baù 20.12.2020 18:33

Во-первых, вы не прикрепляете слушателя. Во-вторых, параметры x, y, button, pressed (pynput.readthedocs.io/en/latest/mouse.html#monitoring-the-m‌​ouse)

Chayim Friedman 20.12.2020 18:40
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python.
Некоторые методы, о которых вы не знали, что они существуют в Python.
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
3 823
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Из Документации Здесь

КОД

from pynput import mouse

def on_move(x, y):
    print('Pointer moved to {0}'.format(
        (x, y)))

def on_click(x, y, button, pressed):
    print(button)  # Print button to see which button of mouse was pressed
    print('{0} at {1}'.format(
        'Pressed' if pressed else 'Released',
        (x, y)))
    



# Collect events until released
with mouse.Listener(
        on_click=on_click
       ) as listener:
    listener.join()

# ...or, in a non-blocking fashion:
listener = mouse.Listener(on_click=on_click)
listener.start()

Как видите, параметр button в функции on_click говорит вам, какая кнопка была нажата.

Обновлено:

Вот как вы можете обрабатывать действия в зависимости от того, какая кнопка мыши была нажата.

 def on_click(x, y, button, pressed):
    btn = button.name

    if btn == 'left':
        print('Left if Pressed')
        # ====== < Handle Pressed or released Event ====== > # 
        if pressed:
            print('Do somethin when Pressed with LEft')
        else:
            print('LEFT is Released')
    elif btn == 'right':
        print('Right BTN was pressed ')
        # ====== < Handle Pressed or released Event ====== > # 
        if not pressed:
            print('right Button is released')
        else:
            pass

Эй, спасибо, но как я могу проверить, нажата ли она или реализована?

commandot tv il 2019 20.12.2020 18:53

Я отредактировал ответ, просто используйте нажатый параметр.

Federico Baù 20.12.2020 19:01

Привет, спасибо за ответ, но я получаю сообщение об ошибке, и я не могу ее исправить, вот мой код

commandot tv il 2019 20.12.2020 19:26

Код `` из pynput.mouse import Button, Controller from pynput import mouse import time import random mouse = Controller() def on_click(x, y, button, press): btn = button.name if btn == 'left' : при нажатии: mouse.click(Button.left) time.sleep(random.uniform(0.01,0.05)) mouse.click(Button.left) time.sleep(random.uniform(0.055,0.095)) с помощью mouse.Listener ( on_click=on_click ) в качестве слушателя: listener.join() ```

commandot tv il 2019 20.12.2020 19:28

From pynput.mouse import Button, Controller from pynput import mouse import time import random mouse = Controller() def on_click(x, y, button, press): btn = button.name if btn == 'left': если нажато: мышь .click(Button.left) time.sleep(random.uniform(0.01,0.05)) mouse.click(Button.left) time.sleep(random.uniform(0.055,0.095)) с помощью mouse.Listener(on_click=on_click) как слушатель: listener.join()

commandot tv il 2019 20.12.2020 19:39

Я использовал ваш код, но он не работает, он говорит, что объект «Контроллер» не имеет атрибута «Слушатель».

commandot tv il 2019 20.12.2020 19:40

Я вижу, что вы сделали from pynput.mouse import Buttonи нет from pynput import mouse. если вы скопируете и вставите мой точный код, он должен работать

Federico Baù 20.12.2020 19:42

From pynput.mouse import Controller from pynput import mouse import time import random mouse = Controller() def on_click(x, y, button, press): btn = button.name if btn == 'left': если нажато: mouse.click (Button.left) time.sleep(random.uniform(0.01,0.05)) mouse.click(Button.left) time.sleep(random.uniform(0.055,0.095)) с помощью mouse.Listener(on_click=on_click) в качестве слушателя : слушатель.присоединиться()

commandot tv il 2019 20.12.2020 19:45

Не работает скопируйте и вставьте мой код и вы увидите

commandot tv il 2019 20.12.2020 19:46

@commandot tv не добавляйте код в комментарий, его невозможно прочитать, отредактируйте свой вопрос с помощью точного кода, который вы используете.

Federico Baù 20.12.2020 19:46

Вы можете редактировать свои собственные вопросы, так что идите и отредактируйте его и добавьте код, который вы используете (тот, который я написал)

Federico Baù 20.12.2020 19:52

В любом случае, я вижу, вы используете = из контроллера импорта pynput.mouse, это должно быть from pynput import mouse

Federico Baù 20.12.2020 19:52

Это не мой код, потому что он отличается и имеет ошибки.

Federico Baù 20.12.2020 19:54

Не работает, пишет "имя 'Контроллер' не определено"

commandot tv il 2019 20.12.2020 19:54

Я добавил еще один ответ, чтобы они были отдельными, вы делаете ошибки при импорте. Также отметим, что запуск mouse_.click(button_.left) делает мой компьютер очень медленным, поэтому будьте осторожны при его использовании.

Federico Baù 20.12.2020 20:08

Я публикую второй ответ из-за другого характера проблемы, обнаруженной в коде здесь

Проблема в том, как вы называете импорт.

ПРАВИЛЬНЫЙ КОД

from pynput import mouse


mouse_ = mouse.Controller()
button = mouse.Button

def on_click(x, y, button, pressed):
    btn = button.name

    if btn == 'left':
        if pressed:
            mouse_.click(button_.left)
            print('works')


with mouse.Listener(
        on_click=on_click
) as listener:
    listener.join()

Скопируйте и вставьте код без изменений.

ПРЕДУПРЕЖДЕНИЕ

Когда я использую button.left, мой компьютер становится очень медленным, поэтому я предлагаю вам не использовать его, если вы не знаете, что делаете.

Другие вопросы по теме