我无法从pynput库中导入某些内容。
在我的代码中,我想使用python库(pynput)在鼠标和键盘上执行一些操作。当我仅导入键盘或鼠标时,它可以工作,但是有时同时导入两者时,则会给我一些错误。
这是我的代码:
from pynput.mouse import Button, Controller
from pynput.keyboard import Key, Controller
from time import sleep
mouse = Controller()
keyboard = Controller()
rock1x = 691
rock1y = 466
rock2x = 548
rock2y = 350
rock3x = 687
rock3y = 234
while (1):
drop1x = 1183
drop1y = 325
drop2x = 1220
drop2y = 325
drop3x = 1263
drop3y = 325
drop4x = 1303
drop4y = 325
for i in range(8):
sleep(2.5)
mouse.position = (rock2x,rock2y)
sleep(0.3)
mouse.press(Button.left)
mouse.release(Button.left)
sleep(2.1)
mouse.position = (rock3x,rock3y)
sleep(0.3)
mouse.press(Button.left)
mouse.release(Button.left)
sleep(2.1)
mouse.position = (rock1x,rock1y)
sleep(0.2)
mouse.press(Button.left)
mouse.release(Button.left)
for i in range(3):
keyboard.press(Key.shift)
for x in range(6):
mouse.position = (drop1x,drop1y)
sleep(0.3)
mouse.press(Button.left)
mouse.release(Button.left)
drop1y=drop1y+35
for x in range(6):
mouse.position = (drop2x,drop2y)
sleep(0.3)
mouse.press(Button.left)
mouse.release(Button.left)
drop2y=drop2y+35
for x in range(6):
mouse.position = (drop3x,drop3y)
sleep(0.3)
mouse.press(Button.left)
mouse.release(Button.left)
drop3y=drop3y+35
for x in range(6):
mouse.position = (drop4x,drop4y)
sleep(0.3)
mouse.press(Button.left)
mouse.release(Button.left)
drop4y=drop4y+35
keyboard.release(Key.shift)
sleep(3)
运行此代码时,出现以下错误:
Traceback (most recent call last):
File "mining.py", line 29, in <module>
mouse.press(Button.left)
File "/home/filipe/.local/lib/python2.7/site-packages/pynput/keyboard/_base.py", line 366, in press
if resolved.is_dead:
AttributeError: 'NoneType' object has no attribute 'is_dead'
但是当我评论第二行时:
from pynput.keyboard import Key, Controller
代码将一直运行到:
keyboard.press(Key.shift)
并给我错误:
Traceback (most recent call last):
File "mining.py", line 48, in <module>
keyboard.press(Key.shift)
NameError: name 'Key' is not defined
我应该如何从pynput库导入以使用鼠标和键盘?
答案 0 :(得分:1)
我认为问题在于您要导入两个不同的Controller
。
第二个(pynput.keyboard.Controller
)覆盖第一个,因为它是最后一个定义的。因此,变量mouse
实际上是pynput.keyboard.Controller
对象,而不是您期望的pynput.mouse.Controller
对象。
当您调用mouse.press(Button.left)
时发生错误,因为Keyboard
对象试图按Button
,而它不能这样做(只能按Key
s)。
要解决此问题,请使用import/as
“一般”导入模块,而不要使用from/import
导入模块的“特定”部分:
import pynput.mouse as ms
import pynput.keyboard as kb
这样,您可以区分两个控制器:
mouse = ms.Controller()
keyboard = kb.Controller()
希望这会有所帮助-请提供任何反馈意见!