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

#python #pynput

#python #pynput

Вопрос:

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

итак, вот мой код:

 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")
       
 

значит, ошибок не было, но это не работает, есть какие-то идеи?

Комментарии:

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

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

Ответ №1:

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

код

 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
 

Комментарии:

1. Привет, спасибо, но как я могу проверить, нажата она или нет?

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

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

4. Код « из pynput.кнопка импорта мыши, контроллер из pynput импорт время импорта мыши импорт случайная мышь = контроллер () def on_click(x, y, кнопка нажата): btn = кнопка. имя, если btn == ‘left’: при нажатии: mouse.click(кнопка.слева) time.sleep(случайный.равномерный (0.01,0.05)) mouse.click(кнопка.слева) time.sleep (случайный.равномерный (0.055, 0.095)) с помощью мыши. Слушатель ( on_click= on_click ) в качестве слушателя: listener.join() «

5. из pynput.кнопка импорта мыши, контроллер из pynput импорт время импорта мыши импорт случайная мышь = контроллер () def on_click(x, y, кнопка нажата): btn = кнопка. имя, если btn == ‘left’: при нажатии: mouse.click(кнопка.слева) time.sleep(случайный.равномерный (0.01,0.05)) mouse.click(кнопка.слева) time.sleep (случайный.равномерный (0.055, 0.095)) с помощью мыши. Слушатель ( on_click= on_click ) в качестве слушателя: listener.join()

Ответ №2:

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

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

ИСПРАВЬТЕ КОД

 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 мой компьютер, он становится чрезвычайно зависающим, поэтому я предлагаю вам не использовать его, если вы не знаете, что делаете