Cursor Position.

S

Samantha

Looking at the goto(xy) thread.
Is there a way to get the X,Y position from a cursor click and then use the
position to apply something like a water mark on an image at that position?
Thanks,
 
F

Fredrik Lundh

Samantha said:
Looking at the goto(xy) thread.
Is there a way to get the X,Y position from a cursor click and then use the
position to apply something like a water mark on an image at that position?

All GUI toolkits can handle the "click here" part. Which one are you using ?

to apply water marks, use PIL:

http://www.pythonware.com/products/pil

</F>
 
S

Samantha

I will be using Tkinter. All I need is a way to get the X,Y position from a
mouse click. I am trying to have an image loaded to click on, but that seems
to be a problem. So if I can just get the position from the screen of a
graphics program, showing an image, it will work for me.
S
 
D

Dennis Lee Bieber

Looking at the goto(xy) thread.
Is there a way to get the X,Y position from a cursor click and then use the
position to apply something like a water mark on an image at that position?
Thanks,
The gotoXY subject is in reference to a TEXT-only console (a command
line)...

If you are manipulating images, you're in GUI environment. So far as
I know, practically all GUI toolkits have some means of tracking mouse
movements... Look for a mouse-button-down/up event.
--
 
J

Juho Schultz

Samantha said:
I will be using Tkinter. All I need is a way to get the X,Y position from a
mouse click. I am trying to have an image loaded to click on, but that seems
to be a problem. So if I can just get the position from the screen of a
graphics program, showing an image, it will work for me.
S

If you use TkInter, use also these:
http://www.pythonware.com/library/tkinter/introduction/index.htm
http://infohost.nmt.edu/tcc/help/pubs/tkinter/

For mouse click position, this might be helpful:
http://www.pythonware.com/library/tkinter/introduction/events-and-bindings.htm
 
D

Diez B. Roggisch

Samantha said:
I will be using Tkinter. All I need is a way to get the X,Y position from a
mouse click. I am trying to have an image loaded to click on, but that seems
to be a problem. So if I can just get the position from the screen of a
graphics program, showing an image, it will work for me.

Won't be easy - a toolkit (like tkinter) will only cpature your mous
events that are directed towards it's own windows. You might be able to
convince your program to collect mouse-events outside for a short period
of time - like snapshot programs do - but that will reqiure pretty
complicated, OS-dependant coding. Certainly way more complicated than
loading an image using tkinter. Better tell us what's giving you a hard
time there.

Diez
 
S

Samantha

Diez,
Won't be easy - a toolkit (like tkinter) will only capture your mouse
events that are directed towards it's own windows.

That is my exact problem. I want to have the mouse event captured from
another application window. In this case an image window opened in Paint
Shop Pro that by the way uses Python to make scripts. I would like to be
able to click on the image and get the X,Y positions. I have been able to
get the X,Y from Tkinter own window as you say. Once I have those positions
I can use them in a Paint Shop Pro script.
Thanks for your reply. Do you have any advise as to how I can do what I am
trying or is it, in a practical matter, impossible.
S
 
D

Diez B. Roggisch

That is my exact problem. I want to have the mouse event captured from
another application window. In this case an image window opened in Paint
Shop Pro that by the way uses Python to make scripts. I would like to be
able to click on the image and get the X,Y positions. I have been able to
get the X,Y from Tkinter own window as you say. Once I have those positions
I can use them in a Paint Shop Pro script.
Thanks for your reply. Do you have any advise as to how I can do what I am
trying or is it, in a practical matter, impossible.

As I said - it certainly is doable. But I fear not in tkinter "as is"
(you can use tk still for your _own_ gui), and not without deeper
knowledge of the windows event system. Then mark hammond's win32
extensions are a starting point. And you should search for example code
on MSDN or something like that (obviously _not_ in python), to get a
starting point.

Regards,

Diez
 
S

snoe

This script should be a good start:
from ctypes import *
import time

PUL = POINTER(c_ulong)
class KeyBdInput(Structure):
_fields_ = [("wVk", c_ushort),
("wScan", c_ushort),
("dwFlags", c_ulong),
("time", c_ulong),
("dwExtraInfo", PUL)]

class HardwareInput(Structure):
_fields_ = [("uMsg", c_ulong),
("wParamL", c_short),
("wParamH", c_ushort)]

class MouseInput(Structure):
_fields_ = [("dx", c_long),
("dy", c_long),
("mouseData", c_ulong),
("dwFlags", c_ulong),
("time",c_ulong),
("dwExtraInfo", PUL)]

class Input_I(Union):
_fields_ = [("ki", KeyBdInput),
("mi", MouseInput),
("hi", HardwareInput)]

class Input(Structure):
_fields_ = [("type", c_ulong),
("ii", Input_I)]

class POINT(Structure):
_fields_ = [("x", c_ulong),
("y", c_ulong)]

def Click(x,y):

orig = POINT()

windll.user32.GetCursorPos(byref(orig))

windll.user32.SetCursorPos(x,y)

FInputs = Input * 2
extra = c_ulong(0)

ii_ = Input_I()
ii_.mi = MouseInput( 0, 0, 0, 2, 0, pointer(extra) )

ii2_ = Input_I()
ii2_.mi = MouseInput( 0, 0, 0, 4, 0, pointer(extra) )

x = FInputs( ( 0, ii_ ), ( 0, ii2_ ) )

windll.user32.SendInput(2, pointer(x), sizeof(x[0]))

return orig.x, orig.y
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,020
Latest member
GenesisGai

Latest Threads

Top