我目前正在将我的任天堂Wii遥控器(有点悲伤)制作成电脑鼠标。我已经成功地让Nunchuk杆控制实际上在屏幕上向上、向下、向左、向右移动鼠标!这太令人兴奋了。现在我卡住了。
当我按A键时,我希望用Python左/右击某些物品。当我去搜索时,它只提供了tkinter?
所以我的问题是,我该调用什么来使Python在桌面上进行左/右键单击操作,如果可能的话,可以提供一小段代码片段吗?
谢谢你的帮助!
注:我想我忘记提到这是为Linux系统。
我目前正在将我的任天堂Wii遥控器(有点悲伤)制作成电脑鼠标。我已经成功地让Nunchuk杆控制实际上在屏幕上向上、向下、向左、向右移动鼠标!这太令人兴奋了。现在我卡住了。
当我按A键时,我希望用Python左/右击某些物品。当我去搜索时,它只提供了tkinter?
所以我的问题是,我该调用什么来使Python在桌面上进行左/右键单击操作,如果可能的话,可以提供一小段代码片段吗?
谢谢你的帮助!
注:我想我忘记提到这是为Linux系统。
你可以使用PyMouse,它现在已经与PyUserInput合并。我通过pip安装了它:
apt-get install python-pip
pip install pymouse
在某些情况下,它使用光标,在其他情况下则模拟鼠标事件而不使用光标。
from pymouse import PyMouse
m = PyMouse()
m.position() #gets mouse current position coordinates
m.move(x,y)
m.click(x,y) #the third argument "1" represents the mouse button
m.press(x,y) #mouse button press
m.release(x,y) #mouse button release
你也可以指定使用哪个鼠标按钮。例如左键:
m.click(x,y,1)
请记住,在Linux上需要Xlib。
ModuleNotFoundError: No module named unix
。请尝试安装pynput
。 - Mihai.Mehepyuserinput
。 - undefinedPyAutoGui非常出色,感谢Al Sweigart...
这是我的一个示例...
import pyautogui
pyautogui.FAILSAFE = False
for x in range(555, 899):
pyautogui.moveTo(x, x)
evdev包提供了对Linux输入处理子系统的部分绑定。它还包括一个面向Python的uinput接口。
使用evdev发送相对运动事件和左键单击的示例:
from evdev import UInput, ecodes as e
capabilities = {
e.EV_REL : (e.REL_X, e.REL_Y),
e.EV_KEY : (e.BTN_LEFT, e.BTN_RIGHT),
}
with UInput(capabilities) as ui:
ui.write(e.EV_REL, e.REL_X, 10)
ui.write(e.EV_REL, e.REL_Y, 10)
ui.write(e.EV_KEY, e.BTN_LEFT, 1)
ui.syn()
pip install pyautogui
),然后调用pyautogui.click()
来单击屏幕上某个X和Y坐标:>>> import pyautogui
>>> pyautogui.click(50, 100)
>>> pyautogui.moveTo(200, 200)
PyAutoGUI可以在Windows、Mac和Linux上运行,并支持Python 2和3。它还可以模拟键盘,进行鼠标拖动,截屏,并对截屏进行简单的图像识别。
打开终端并进入 cd /usr/share/pyshared/twisted/protocols/mice
也许这个 __init__.py
和 mouseman.py
的python脚本能够帮到你,去看看吧。
我没有看到这个提到过,所以在这里提一下 - 还有 python-dogtail
;请参见:
它需要在 Gnome 桌面中启用 "辅助技术" - 但原则上可以获取应用程序的 GUI 按钮名称,并允许虚拟点击它们(而不是通过 x/y 坐标)。