如何在Python中控制鼠标光标,即将其移动到某个位置并单击,在Windows下?
答案 0 :(得分:293)
在安装pywin32(在我的情况下是pywin32-214.win32-py2.6.exe)之后在WinXP,Python 2.6(3.x也经过测试)上测试过:
import win32api, win32con
def click(x,y):
win32api.SetCursorPos((x,y))
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)
click(10,10)
答案 1 :(得分:98)
尝试使用PyAutoGUI模块。它是多平台的。
pip install pyautogui
所以:
import pyautogui
pyautogui.click(100, 100)
它还有其他功能:
import pyautogui
pyautogui.moveTo(100, 150)
pyautogui.moveRel(0, 10) # move mouse 10 pixels down
pyautogui.dragTo(100, 150)
pyautogui.dragRel(0, 10) # drag mouse 10 pixels down
这比通过所有win32con的东西容易得多。
答案 2 :(得分:72)
您可以使用win32api
或ctypes
模块使用win32 apis来控制鼠标或任何gui
以下是使用win32api控制鼠标的有趣示例:
import win32api
import time
import math
for i in range(500):
x = int(500+math.sin(math.pi*i/100)*500)
y = int(500+math.cos(i)*100)
win32api.SetCursorPos((x,y))
time.sleep(.01)
使用ctypes进行点击:
import ctypes
# see http://msdn.microsoft.com/en-us/library/ms646260(VS.85).aspx for details
ctypes.windll.user32.SetCursorPos(100, 20)
ctypes.windll.user32.mouse_event(2, 0, 0, 0,0) # left down
ctypes.windll.user32.mouse_event(4, 0, 0, 0,0) # left up
答案 3 :(得分:21)
查看跨平台PyMouse:https://github.com/pepijndevos/PyMouse/
答案 4 :(得分:20)
另一种选择是使用跨平台AutoPy package。此程序包有两个不同的移动鼠标选项:
此代码段会立即将光标移动到位置(200,200):
import autopy
autopy.mouse.move(200,200)
如果您希望光标在屏幕上明显移动到给定位置,则可以使用smooth_move命令:
import autopy
autopy.mouse.smooth_move(200,200)
答案 5 :(得分:14)
from Xlib import X, display
d = display.Display()
s = d.screen()
root = s.root
root.warp_pointer(300,300)
d.sync()
答案 6 :(得分:10)
截至 2020 ,您可以使用mouse:
import mouse
mouse.move("500", "500")
mouse.left_click()
功能
答案 7 :(得分:7)
使用ctypes
库在Windows 7上clicks
次左键单击的快速和脏功能。无需下载。
import ctypes
SetCursorPos = ctypes.windll.user32.SetCursorPos
mouse_event = ctypes.windll.user32.mouse_event
def left_click(x, y, clicks=1):
SetCursorPos(x, y)
for i in xrange(clicks):
mouse_event(2, 0, 0, 0, 0)
mouse_event(4, 0, 0, 0, 0)
left_click(200, 200) #left clicks at 200, 200 on your screen. Was able to send 10k clicks instantly.
答案 8 :(得分:7)
Pynput是我找到的最佳解决方案,适用于Windows和Mac。超级易于编程,并且运行良好。
例如,
from pynput.mouse import Button, Controller
mouse = Controller()
# Read pointer position
print('The current pointer position is {0}'.format(
mouse.position))
# Set pointer position
mouse.position = (10, 20)
print('Now we have moved it to {0}'.format(
mouse.position))
# Move pointer relative to current position
mouse.move(5, -5)
# Press and release
mouse.press(Button.left)
mouse.release(Button.left)
# Double click; this is different from pressing and releasing
# twice on Mac OSX
mouse.click(Button.left, 2)
# Scroll two steps down
mouse.scroll(0, 2)
答案 9 :(得分:2)
如果要移动鼠标,请使用以下方法:
import pyautogui
pyautogui.moveTo(x,y)
如果要单击,请使用此:
import pyautogui
pyautogui.click(x,y)
如果未安装pyautogui
,则必须将python附加到CMD。转到CMD并输入:pip install pyautogui
这将为Python 2.x安装pyautogui
。
对于Python 3.x,您可能必须使用pip3 install pyautogui
或python3 -m pip install pyautogui
。
答案 10 :(得分:1)
另一种选择是mouse library,我个人使用它,因为它相对简单且跨平台。
这里是使用方式:
import mouse
# move 100 right and 100 down with a duration of 0.5 seconds
mouse.move(100, 100, absolute=False, duration=0.5)
# left click
mouse.click('left')
# right click
mouse.click('right')
答案 11 :(得分:1)
非常容易 1-安装包装:
pip install mouse
2-将库添加到项目:
import mouse
3-以它为例:
mouse.right_click()
在此网址中描述您可以使用的所有功能:
答案 12 :(得分:1)
在屏幕上随机移动鼠标
它将根据您的屏幕分辨率在屏幕上随机移动鼠标。 检查下面的代码。
使用此命令安装pip install pyautogui
。
import pyautogui
import time
import random as rnd
#calculate height and width of screen
w, h = list(pyautogui.size())[0], list(pyautogui.size())[1]
while True:
time.sleep(1)
#move mouse at random location in screen, change it to your preference
pyautogui.moveTo(rnd.randrange(0, w),
rnd.randrange(0, h))#, duration = 0.1)
答案 13 :(得分:0)
可接受的答案对我有用,但不稳定(有时点击不会重新注册),因此我添加了一个额外的 MOUSEEVENTF_LEFTUP 。然后它运行可靠
import win32api, win32con
def click(x,y):
win32api.SetCursorPos((x,y))
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)
click(10,10)
答案 14 :(得分:0)
如果您需要使用游戏。如本文https://www.learncodebygaming.com/blog/pyautogui-not-working-use-directinput所述,Minecraft或Fortnite之类的某些游戏都有自己的注册鼠标/键盘事件的方式。控制鼠标和键盘事件的方法是使用全新 PyDirectInput库。他们的github存储库是https://github.com/learncodebygaming/pydirectinput,并且有很多很好的信息。
这是执行鼠标循环并单击的快速代码:
import pydirectinput # pip install pydirectinput
pydirectinput.moveTo(0, 500)
pydirectinput.click()