पायथन में माउस कर्सर को कैसे नियंत्रित करता है, अर्थात इसे कुछ निश्चित स्थिति में ले जाएं और विंडोज के नीचे क्लिक करें?
पायथन में माउस कर्सर को कैसे नियंत्रित करता है, अर्थात इसे कुछ निश्चित स्थिति में ले जाएं और विंडोज के नीचे क्लिक करें?
जवाबों:
WinXP पर परीक्षण किया गया, पायथन 2.6 (3.x भी परीक्षण किया गया) मेरे मामले में pywin32 (pywin32-214.win32-py2.6.exe ) स्थापित करने के बाद :
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))
खेल जैसे अन्य एप्लिकेशन के साथ बेहतर एकीकरण के लिए मेरे अनुभव से प्रतिस्थापित किया जाना बेहतर है।
python3.x
कार्यों में भी परीक्षण किया गया है, जवाब को संपादित करने के लिए स्वतंत्र महसूस करें
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 सामान के माध्यम से जाने से बहुत आसान है।
आप उपयोग कर सकते हैं win32api
या ctypes
मॉड्यूल को नियंत्रित करने के लिए माउस या किसी जीयूआई के लिए Win32 एपीआई का उपयोग करने के लिए
यहाँ 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
SetCursorPos
?
एक अन्य विकल्प क्रॉस-प्लेटफॉर्म ऑटोपाय पैकेज का उपयोग करना है । इस पैकेज में माउस घुमाने के लिए दो अलग-अलग विकल्प हैं:
यह कोड स्निपेट कर्सर को तुरंत स्थिति में ले जाएगा (200,200):
import autopy
autopy.mouse.move(200,200)
यदि आप इसके बजाय कर्सर को स्क्रीन पर दिए गए स्थान पर ले जाना चाहते हैं, तो आप smooth_move कमांड का उपयोग कर सकते हैं:
import autopy
autopy.mouse.smooth_move(200,200)
क्रॉस प्लेटफॉर्म की जाँच करें PyMouse: https://github.com/pepijndevos/PyMouse/
tap space
और tap screen shot key
PyUswerInput का उपयोग करके?
PyUserInput
टूट गया है। कह नहीं सकता कि यह अच्छी तरह से काम करता है या नहीं क्योंकि मैं टूटी हुई निर्भरता के कारण इसे स्थापित करने के लिए भी नहीं मिल सकता।
from Xlib import X, display
d = display.Display()
s = d.screen()
root = s.root
root.warp_pointer(300,300)
d.sync()
स्रोत: अजगर माउस कोड की 5 लाइनों (केवल लिनक्स) में चलते हैं ।
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();
नींद () प्रेस और रिलीज के बीच कॉल और लक्ष्य एप्लिकेशन के आधार पर आवश्यक हो सकता है या नहीं।
Pynput सबसे अच्छा समाधान है जो मैंने पाया है, दोनों विंडोज और मैक के लिए। सुपर आसान कार्यक्रम के लिए, और बहुत अच्छी तरह से काम करता है।
उदाहरण के लिए,
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)
त्वरित और गंदे कार्य जो लाइब्रेरी के clicks
उपयोग से विंडोज 7 पर कहीं भी क्लिक करेंगे ctypes
। कोई डाउनलोड आवश्यक नहीं।
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.
के रूप में 2020 , आप उपयोग कर सकते हैं माउस :
import mouse
mouse.move("500", "500")
mouse.left_click()
विशेषताएं
यदि आप माउस को स्थानांतरित करना चाहते हैं, तो इसका उपयोग करें:
import pyautogui
pyautogui.moveTo(x,y)
यदि आप क्लिक करना चाहते हैं, तो इसका उपयोग करें:
import pyautogui
pyautogui.click(x,y)
यदि आपने pyautogui
इंस्टॉल नहीं किया है, तो आपके पास सीएमडी से जुड़ा अजगर होना चाहिए। CMD पर जाएं और लिखें:pip install pyautogui
यह pyautogui
पायथन 2.x के लिए स्थापित होगा ।
पायथन 3.x के लिए, आपको संभवतः उपयोग करना होगा pip3 install pyautogui
या python3 -m pip install pyautogui
।
pyautogui.moveTo(x, y)
क्योंकि move()
कर्सर को उसकी वर्तमान स्थिति के सापेक्ष ले जाता है।
moveTo()
समय एक निरपेक्ष स्थान पर move()
जाता है।
एक अन्य विकल्प माउस लाइब्रेरी होगा , मैं व्यक्तिगत रूप से इसका उपयोग करता हूं क्योंकि यह अपेक्षाकृत सरल और क्रॉस-प्लेटफॉर्म है।
यहाँ आप इसका उपयोग कैसे कर सकते हैं:
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')
यहाँ स्रोत है: पायथन में अपने माउस को कैसे नियंत्रित करें
स्वीकृत उत्तर ने मेरे लिए काम किया लेकिन यह अस्थिर था (कभी-कभी क्लिक पुन: व्यवस्थित नहीं होता) इसलिए मैंने एक अतिरिक्त 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)
बहुत आसान 1- स्थापित pakage:
pip install mouse
2- परियोजना में पुस्तकालय जोड़ें:
import mouse
3- उदाहरण के लिए इसका उपयोग करें:
mouse.right_click()
इस url में सभी फ़ंक्शन का वर्णन करें जिन्हें आप इसका उपयोग कर सकते हैं: