Python'da fare imlecini nasıl kontrol eder, yani Windows altında belirli bir konuma taşıyın ve tıklayın?
Python'da fare imlecini nasıl kontrol eder, yani Windows altında belirli bir konuma taşıyın ve tıklayın?
Yanıtlar:
Pywin32 (pywin32-214.win32-py2.6.exe benim durumumda) yüklendikten sonra WinXP, Python 2.6 (3.x de test edildi) üzerinde test edildi :
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))
win32api.mouse_event(win32con.MOUSEEVENTF_MOVE | win32con.MOUSEEVENTF_ABSOLUTE, int(x/SCREEN_WIDTH*65535.0), int(y/SCREEN_HEIGHT*65535.0))
oyun gibi diğer uygulamalarla daha iyi entegrasyon için deneyimimde yerini almak daha iyidir.
python3.x
çalışmalarda da test edildi , cevabı düzenlemek için çekinmeyin
PyAutoGUI modülünü deneyin . Çok platformlu.
pip install pyautogui
Ve bu yüzden:
import pyautogui
pyautogui.click(100, 100)
Ayrıca başka özellikleri de vardır:
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
Bu, tüm win32con öğelerinden geçmekten çok daha kolay.
Fare veya herhangi bir GUI'yi kontrol etmek için win32 apis'i kullanmak için win32api
veya ctypes
modülünü kullanabilirsiniz
İşte win32api kullanarak fareyi kontrol etmek için eğlenceli bir örnek:
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 kullanan bir tıklama:
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
?
Diğer bir seçenek, platformlar arası AutoPy paketini kullanmaktır . Bu paketin fareyi hareket ettirmek için iki farklı seçeneği vardır:
Bu kod pasajı imleci anında (200,200) konumuna getirecektir:
import autopy
autopy.mouse.move(200,200)
Bunun yerine imlecin ekran boyunca belirli bir konuma görünür bir şekilde hareket etmesini istiyorsanız smooth_move komutunu kullanabilirsiniz:
import autopy
autopy.mouse.smooth_move(200,200)
Çapraz platform PyMouse'a göz atın: https://github.com/pepijndevos/PyMouse/
tap space
ve nasıl tap screen shot key
kullanılacağını biliyor musunuz?
PyUserInput
bozuk. İyi çalışıp çalışmadığını söyleyemem çünkü kırık bağımlılıklar nedeniyle yüklemeyi bile alamıyorum.
from Xlib import X, display
d = display.Display()
s = d.screen()
root = s.root
root.warp_pointer(300,300)
d.sync()
Kaynak: Python mouse 5 satırlık kodda hareket eder (sadece 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();
hedef uygulamaya bağlı olarak, basın ve bırakma arasındaki uyku () çağrısı gerekebilir veya gerekmeyebilir.
Pynput , hem Windows hem de Mac için bulduğum en iyi çözüm. Süper programlaması kolay ve çok iyi çalışıyor.
Örneğin,
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)
Kitaplığı clicks
kullanarak Windows 7'de herhangi bir yere sol tıklayacak hızlı ve kirli işlev ctypes
. İndirme gerekmez.
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.
İtibariyle 2020 kullanabileceğiniz fare :
import mouse
mouse.move("500", "500")
mouse.left_click()
Özellikleri
Fareyi hareket ettirmek istiyorsanız, şunu kullanın:
import pyautogui
pyautogui.moveTo(x,y)
Tıklamak istiyorsanız, şunu kullanın:
import pyautogui
pyautogui.click(x,y)
Eğer var yoksa pyautogui
yüklediğinizi CMD bağlı python olması gerekir. CMD'ye gidin ve şunu yazın:pip install pyautogui
Bu pyautogui
Python 2.x için yüklenecektir .
Python 3.x için muhtemelen pip3 install pyautogui
veya kullanmanız gerekecektir python3 -m pip install pyautogui
.
pyautogui.moveTo(x, y)
çünkü move()
imleci geçerli konumuna göre hareket ettirir.
moveTo()
mutlak bir konuma taşırken move()
geçerli imleç konumuna göre hareket eder.
Başka bir alternatif fare kütüphanesi olurdu , şahsen nispeten basit ve çapraz platform olduğu için kullanıyorum.
İşte nasıl kullanabilirsiniz:
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')
İşte kaynak: Python'da Farenizi Kontrol Etme
Kabul edilen cevap benim için çalıştı ama kararsız (bazen tıklama regsiter olmaz) bu yüzden ek bir MOUSEEVENTF_LEFTUP ekledim . Sonra güvenilir bir şekilde çalışıyordu
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)
çok kolay 1-pakage yükleyin:
pip install mouse
2- Projeye kütüphane ekleyin:
import mouse
3- örneğin kullanın:
mouse.right_click()
bu url'de kullanabileceğiniz tüm işlevleri açıklayın: