Cursor Position.

Discussion in 'Python' started by Samantha, Nov 9, 2005.

  1. Samantha

    Samantha Guest

    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,
    Samantha, Nov 9, 2005
    #1
    1. Advertising

  2. "Samantha" <> wrote:

    > 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>
    Fredrik Lundh, Nov 9, 2005
    #2
    1. Advertising

  3. Samantha

    Samantha Guest

    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
    "Fredrik Lundh" <> wrote in message
    news:...
    > "Samantha" <> wrote:
    >
    >> 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>
    >
    >
    >
    Samantha, Nov 9, 2005
    #3
  4. On Tue, 8 Nov 2005 22:07:00 -0800, "Samantha" <>
    declaimed the following in comp.lang.python:

    > 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.
    --
    > ============================================================== <
    > | Wulfraed Dennis Lee Bieber KD6MOG <
    > | Bestiaria Support Staff <
    > ============================================================== <
    > Home Page: <http://www.dm.net/~wulfraed/> <
    > Overflow Page: <http://wlfraed.home.netcom.com/> <
    Dennis Lee Bieber, Nov 9, 2005
    #4
  5. Samantha

    Juho Schultz Guest

    Samantha wrote:
    > 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
    Juho Schultz, Nov 9, 2005
    #5
  6. Samantha wrote:
    > 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
    Diez B. Roggisch, Nov 9, 2005
    #6
  7. Samantha

    Samantha Guest

    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

    "Diez B. Roggisch" <> wrote in message
    news:...
    > Samantha wrote:
    >> 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
    Samantha, Nov 9, 2005
    #7
  8. > 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
    Diez B. Roggisch, Nov 9, 2005
    #8
  9. Samantha

    snoe Guest

    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
    snoe, Nov 16, 2005
    #9
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Matt Tapia

    Insert text at cursor position

    Matt Tapia, Nov 26, 2003, in forum: ASP .Net
    Replies:
    1
    Views:
    529
    Chris Taylor
    Nov 26, 2003
  2. Matt Tapia

    Insert text at cursor position...still

    Matt Tapia, Dec 1, 2003, in forum: ASP .Net
    Replies:
    1
    Views:
    583
    General Protection Fault
    Dec 1, 2003
  3. =?Utf-8?B?VG9tYXMgS2VwaWM=?=

    Changing DEFAULT cursor to WAIT cursor in ASP

    =?Utf-8?B?VG9tYXMgS2VwaWM=?=, Apr 5, 2005, in forum: ASP .Net
    Replies:
    1
    Views:
    2,287
    Bruce Barker
    Apr 5, 2005
  4. invy
    Replies:
    4
    Views:
    374
    CBFalconer
    Dec 28, 2006
  5. dmaziuk
    Replies:
    3
    Views:
    543
    Chris Gonnerman
    Jan 25, 2011
Loading...

Share This Page