Bagaimana cara mengontrol kursor mouse di Python, yaitu memindahkannya ke posisi tertentu dan klik, di bawah Windows?
Bagaimana cara mengontrol kursor mouse di Python, yaitu memindahkannya ke posisi tertentu dan klik, di bawah Windows?
Jawaban:
Diuji pada WinXP, Python 2.6 (3.x juga diuji) setelah menginstal pywin32 (pywin32-214.win32-py2.6.exe dalam kasus saya):
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))
lebih baik diganti oleh win32api.mouse_event(win32con.MOUSEEVENTF_MOVE | win32con.MOUSEEVENTF_ABSOLUTE, int(x/SCREEN_WIDTH*65535.0), int(y/SCREEN_HEIGHT*65535.0))
pengalaman saya untuk integrasi yang lebih baik dengan aplikasi lain seperti game.
python3.x
karya juga, jangan ragu untuk mengedit jawabannya
Coba dengan modul PyAutoGUI . Ini multi platform.
pip install pyautogui
Sehingga:
import pyautogui
pyautogui.click(100, 100)
Ini juga memiliki fitur lain:
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
Ini jauh lebih mudah daripada melalui semua hal win32con.
Anda dapat menggunakan win32api
atau ctypes
modul untuk menggunakan win32 apis untuk mengendalikan mouse atau gui apa pun
Berikut ini adalah contoh yang menyenangkan untuk mengontrol mouse menggunakan 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)
Satu klik menggunakan 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
?
Pilihan lain adalah menggunakan paket AutoPy lintas-platform . Paket ini memiliki dua opsi berbeda untuk menggerakkan mouse:
Cuplikan kode ini akan langsung memindahkan kursor ke posisi (200.200):
import autopy
autopy.mouse.move(200,200)
Jika Anda ingin kursor bergerak melintasi layar ke lokasi tertentu, Anda dapat menggunakan perintah smooth_move:
import autopy
autopy.mouse.smooth_move(200,200)
Lihat platform silang PyMouse: https://github.com/pepijndevos/PyMouse/
tap space
dan tap screen shot key
menggunakan PyUswerInput?
PyUserInput
rusak. Tidak dapat mengatakan apakah itu berfungsi dengan baik atau tidak karena saya bahkan tidak dapat menginstalnya karena dependensi yang rusak.
from Xlib import X, display
d = display.Display()
s = d.screen()
root = s.root
root.warp_pointer(300,300)
d.sync()
Sumber: Python mouse bergerak dalam 5 baris kode (hanya 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();
panggilan sleep () antara pers dan rilis mungkin diperlukan atau mungkin tidak diperlukan tergantung pada aplikasi target.
Pynput adalah solusi terbaik yang saya temukan, baik untuk Windows maupun untuk Mac. Sangat mudah diprogram, dan bekerja dengan sangat baik.
Sebagai contoh,
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)
Fungsi cepat dan kotor yang akan mengklik kiri di mana saja clicks
pada Windows 7 menggunakan ctypes
perpustakaan. Tidak diperlukan unduhan.
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.
Mulai tahun 2020 , Anda dapat menggunakan mouse :
import mouse
mouse.move("500", "500")
mouse.left_click()
fitur
Jika Anda ingin memindahkan mouse, gunakan ini:
import pyautogui
pyautogui.moveTo(x,y)
Jika Anda ingin mengklik, gunakan ini:
import pyautogui
pyautogui.click(x,y)
Jika Anda belum pyautogui
menginstal, Anda harus memasang python ke CMD. Pergi ke CMD dan tulis:pip install pyautogui
Ini akan menginstal pyautogui
untuk Python 2.x.
Untuk Python 3.x, Anda mungkin harus menggunakan pip3 install pyautogui
atau python3 -m pip install pyautogui
.
pyautogui.moveTo(x, y)
karena move()
menggerakkan kursor relatif ke posisi saat ini.
moveTo()
bergerak ke lokasi absolut, sementara move()
bergerak relatif ke lokasi kursor saat ini.
Alternatif lain adalah perpustakaan mouse , saya pribadi menggunakannya karena relatif sederhana dan lintas platform.
Inilah cara Anda dapat menggunakannya:
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')
Inilah sumbernya: Cara Mengontrol Mouse Anda dengan Python
Jawaban yang diterima berfungsi untuk saya tetapi tidak stabil (terkadang klik tidak akan berhasil) jadi saya menambahkan MOUSEEVENTF_LEFTUP tambahan . Kemudian itu bekerja dengan andal
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)
sangat mudah 1- instal pakage:
pip install mouse
2- tambahkan perpustakaan ke proyek:
import mouse
3 - menggunakannya misalnya:
mouse.right_click()
dalam url ini jelaskan semua fungsi yang dapat Anda gunakan: