automatic click on identified object - python

this code makes the mouse move to the object that was identified when I press CAPSLOCK, I use yolo to detect the object
I would like the mouse to do the automatic left click when I hover over the detected object
# Moving the mouse
if win32api.GetKeyState(0x14):
win32api.mouse_event(win32con.MOUSEEVENTF_MOVE, int(
mouseMove[0] * aaMovementAmp), int(mouseMove[1] * aaMovementAmp), 0, 0)
last_mid_coord = [xMid, yMid]

Once you are hovering over the object, just use the mouse module to make the mouse click.
import mouse
# left click
mouse.click('left')

Related

Python - How to stimulate mouse click without moving cursor?

I'm trying to use pyautogui and click at a certain area on my screen, but I want it to click without physically moving my cursor, kind of like an invisible click. So far, I have no idea how to do it, only the typical automate clicking and moving of cursor position to the area.
I used the following:
pyautogui.click(x=100, y=13)
But, it moved the cursor to that specific position instead of sending click. Is there any possible way to do so with pyautogui or any other module ?
import pyautogui
# Get the x and y coordinates of the target location
x = 100
y = 13
# Move the cursor to the target location
pyautogui.moveTo(x, y)
# Simulate a left mouse button down at the target location
pyautogui.mouseDown(button='left', x=x, y=y)
# Simulate a left mouse button up at the target location
pyautogui.mouseUp(button='left', x=x, y=y)
This usually works on the primary monitor. I tested with the right click.
import pyautogui
# Get the size of the primary monitor.
screenWidth, screenHeight = pyautogui.size()
print(screenWidth, screenHeight)
pyautogui.click(100, 200, button='right')
The pyautogui.click() function can simulate a mouse click without moving the cursor. You can use it by specifying the x and y coordinates of the location you want to click.
Here's an example code snippet:
import pyautogui
# Click at position (100, 13)
pyautogui.click(x=100, y=13)
This will simulate a left mouse click at the coordinates (100, 13) on the screen, without moving the cursor. Note that you may need to adjust the coordinates to match the position where you want to click on your specific screen.

Python mouse recoder

I want to use "mouse" liberary to recoed mouse events,but its position is relative,who can I set recoder to record absolute position?
import mouse
events=mouse.record() #record until clicking right button
mouse.play(events[:-1]) #skip right button clicked
thanks

In windows using python how do I check if the middle mouse button is held down?

I know how to check if the left mouse button and if the right mouse button are held down:
from ctypes import windll
left_click = windll.user32.GetKeyState(0x01)
right_click = windll.user32.GetKeyState(0x02)
print(f'left_click: {left_click}')
print(f'right_click: {right_click}')
But what is the code for checking if the middle mouse button is held down?
I'd like to do it with the ctypes function: windll.user32.GetKeyState()
I've googled it and I can't find anything.
middle_click = windll.user32.GetKeyState(0x04)
You can check the reference here.
https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes

How to delay mouse click using python?

I am using pynput based listener to detect and record mouse clicks using python.
def on_click(x, y, button, pressed):
if pressed:
on_release("clicked")
button = str(button).replace("Button.","")
inverted_comma = "'"
button = f"{inverted_comma}{button}{inverted_comma}"
mouse_values = [x, y, button]
macro_writer('click',mouse_values)
#image based click
time.sleep(1)
pyautogui.moveTo(1,1)
time.sleep(2)
x = x-50
y = y-50
im3 = pyautogui.screenshot(r"D:\Library\Project\Project\theautomater\src\macro\prett2.png",region=(x,y, 100 , 100))
I am able to record the coordinates of the mouse. Problem is I want to record the image/icon where the mouse clicks and as you can see the last line, I can do that but it happens AFTER the click.
This creates the problem that the icon is in "clicked" or "hover" state.
The solution I am thinking of implementing is pausing the click function taking screenshot then clicking.
For this, I need to figure out how to delay the mouse click using python. Can anyone suggest something?
The other question on SO, does not work as intended (Delay mouse click 0.5 second), please do not mark as duplicate.

How to click a specific button?

I am new to python.
I am trying to make the game start, when the button "pull" is clicked.
But what I have, the game starts wherever I click in the win.
from graphics import*
from random import*
from time import*
def main():
# Creating the window
win = GraphWin("Clay Target Control Panel",400,400)
# "Pull" rectangle and color
pullrec = Rectangle(Point(150,290),Point(250,330))
pullrec.setFill("light salmon")
pullrec.draw(win)
pullmess = Text(Point(200,310),"PULL")
pullmess.setSize(11)
pullmess.setStyle("bold")
pullmess.draw(win)
# Start the game when "Pull" rectangle is clicked.
while True:
mouse = win.getMouse()
if pullrec:
win.getMouse()
I suspect that win.getMouse blocks, waiting for a mouse click. pullrec is bound to a rectangle. bool(<rectangle>) is True, so if rectangle always fires. You need to instead call some method that looks at where the mouse was clicked. I know how to do this with tkinter, but not graphics.

Categories