Làm thế nào để một người điều khiển con trỏ chuột trong Python, tức là di chuyển nó đến vị trí nhất định và nhấp, trong Windows?
Làm thế nào để một người điều khiển con trỏ chuột trong Python, tức là di chuyển nó đến vị trí nhất định và nhấp, trong Windows?
Câu trả lời:
Đã thử nghiệm trên WinXP, Python 2.6 (3.x cũng đã thử nghiệm) sau khi cài đặt pywin32 (pywin32-214.win32-py2.6.exe trong trường hợp của tôi):
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)
win32api.SetCursorPos((x,y))
tốt hơn là được thay thế bằng win32api.mouse_event(win32con.MOUSEEVENTF_MOVE | win32con.MOUSEEVENTF_ABSOLUTE, int(x/SCREEN_WIDTH*65535.0), int(y/SCREEN_HEIGHT*65535.0))
kinh nghiệm của tôi để tích hợp tốt hơn với các ứng dụng khác như trò chơi.
python3.x
các tác phẩm, vui lòng chỉnh sửa câu trả lời
Hãy thử với mô-đun PyAutoGUI . Đó là đa nền tảng.
pip install pyautogui
Và vì thế:
import pyautogui
pyautogui.click(100, 100)
Nó cũng có các tính năng khác:
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
Điều này dễ dàng hơn nhiều so với việc đi qua tất cả các công cụ win32con.
Bạn có thể sử dụng win32api
hoặc ctypes
mô-đun để sử dụng win32 apis để điều khiển chuột hoặc bất kỳ gui nào
Dưới đây là một ví dụ thú vị để điều khiển chuột bằng 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)
Một nhấp chuột bằng cách sử dụng 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
SetCursorPos
đâu?
Một tùy chọn khác là sử dụng gói AutoPy đa nền tảng . Gói này có hai tùy chọn khác nhau để di chuyển chuột:
Đoạn mã này sẽ ngay lập tức di chuyển con trỏ đến vị trí (200.200):
import autopy
autopy.mouse.move(200,200)
Thay vào đó, nếu bạn muốn con trỏ di chuyển rõ ràng trên màn hình đến một vị trí nhất định, bạn có thể sử dụng lệnh smooth_move:
import autopy
autopy.mouse.smooth_move(200,200)
Kiểm tra PyMouse đa nền tảng: https://github.com/pepijndevos/PyMouse/
tap space
và tap screen shot key
bằng cách sử dụng PyUswerInput không?
PyUserInput
bị hỏng. Không thể nói nó có hoạt động tốt hay không bởi vì tôi thậm chí không thể cài đặt nó do phụ thuộc bị hỏng.
from Xlib import X, display
d = display.Display()
s = d.screen()
root = s.root
root.warp_pointer(300,300)
d.sync()
Nguồn: Chuột Python di chuyển trong 5 dòng mã (chỉ dành cho Linux) .
Xlib.ext.xtest.fake_input(d, X.ButtonPress, 1); d.sync(); time.sleep(0.001); Xlib.ext.xtest.fake_input(d, X.ButtonRelease, 1); d.sync();
cuộc gọi ngủ () giữa báo chí và phát hành có thể hoặc không thể được yêu cầu tùy thuộc vào ứng dụng đích.
Pynput là giải pháp tốt nhất tôi đã tìm thấy, cho cả Windows và Mac. Siêu dễ dàng để lập trình, và hoạt động rất tốt.
Ví dụ,
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)
Chức năng nhanh và bẩn sẽ nhấp chuột trái bất cứ lúc clicks
nào trên Windows 7 bằng ctypes
thư viện. Không cần tải xuống.
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.
Kể từ năm 2020 , bạn có thể sử dụng chuột :
import mouse
mouse.move("500", "500")
mouse.left_click()
Đặc trưng
Nếu bạn muốn di chuyển chuột, hãy sử dụng:
import pyautogui
pyautogui.moveTo(x,y)
Nếu bạn muốn nhấp, sử dụng cái này:
import pyautogui
pyautogui.click(x,y)
Nếu bạn chưa pyautogui
cài đặt, bạn phải gắn python vào CMD. Chuyển đến CMD và viết:pip install pyautogui
Điều này sẽ cài đặt pyautogui
cho Python 2.x.
Đối với Python 3.x, bạn có thể sẽ phải sử dụng pip3 install pyautogui
hoặc python3 -m pip install pyautogui
.
pyautogui.moveTo(x, y)
vì move()
di chuyển con trỏ so với vị trí hiện tại của nó.
moveTo()
di chuyển đến một vị trí tuyệt đối, trong khi move()
di chuyển so với vị trí con trỏ hiện tại.
Một lựa chọn khác là thư viện chuột , cá nhân tôi sử dụng nó vì nó tương đối đơn giản và đa nền tảng.
Đây là cách bạn có thể sử dụng nó:
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')
Đây là nguồn: Cách kiểm soát chuột của bạn trong Python
Câu trả lời được chấp nhận có hiệu quả đối với tôi nhưng nó không ổn định (đôi khi số lần nhấp sẽ không hiển thị) vì vậy tôi đã thêm MOUSEEVENTF_LEFTUP . Sau đó, nó đã làm việc đáng tin cậy
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)
rất dễ dàng cài đặt pakage:
pip install mouse
2- thêm thư viện vào dự án:
import mouse
3- sử dụng nó chẳng hạn:
mouse.right_click()
trong url này mô tả tất cả các chức năng mà bạn có thể sử dụng nó: