AttributeError: объект 'str' не имеет атрибута 'value' | Pynput не позволяет мне использовать мышь и клавиатуру одновременно

У меня проблема с Pynput, всякий раз, когда я использую функции мыши и клавиатуры вместе, вывод отвечает:

AttributeError: 'str' object has no attribute 'value'

Я пытался найти решение, но ничего из того, что я мог найти, не сработало. Я прикрепил свой скрипт, ошибка возникает только тогда, когда я использую функции мыши и клавиатуры.

from pynput.keyboard import Key, Controller
from pynput.mouse import Button, Controller
mouse = Controller()
keyboard = Controller()

key1 = "s"
key2= "t"
key3 = "o"
key4 = "p"

mouse.position = (-1180, 153)
mouse.click(Button.left, 1)
keyboard.press(key1)
keyboard.release(key1)
keyboard.press(key2)
keyboard.release(key2)
keyboard.press(key3)
keyboard.release(key3)
keyboard.press(key4)
keyboard.release(key4)

Спасибо - Коннор


person Connor-Gold    schedule 29.09.2020    source источник
comment
Вы импортируете Controller из двух разных модулей. Имя будет относиться только к самому последнему присвоенному ему значению, в данном случае это pynput.mouse.Controller.   -  person jasonharper    schedule 29.09.2020
comment
Импортируйте второй контроллер с псевдонимом: from pynput.mouse import Button, Controller as MController   -  person Mike67    schedule 29.09.2020
comment
@Mike67 Майк67 Я изменил переменную мыши на MController, но она все равно не работает. Наверное, я сделал что-то очень глупое.   -  person Connor-Gold    schedule 29.09.2020


Ответы (1)


Как упоминалось в комментариях, вы импортируете два класса с одинаковым именем. Используйте псевдоним, чтобы различать их в коде.

Этот код работает так, как ожидалось:

from pynput.keyboard import Key, Controller
from pynput.mouse import Button, Controller as MController  # alias
mouse = MController()
keyboard = Controller()

key1 = "s"
key2= "t"
key3 = "o"
key4 = "p"

mouse.position = (-1180, 153)
mouse.click(Button.left, 1)
keyboard.press(key1)
keyboard.release(key1)
keyboard.press(key2)
keyboard.release(key2)
keyboard.press(key3)
keyboard.release(key3)
keyboard.press(key4)
keyboard.release(key4)
person Mike67    schedule 29.09.2020