Thank you Michael, I was looking also for that function but for another task.

On my previous email I was asking to find the position (x,y) of the text-cursor 
or alternative the bbox of a single character from a text element inside a 
canvas. In my project I have created a full text editor inside the canvas for 
floating text elements.

# create a text element
txt = canvas.create_text(xt,yt,text="blahblah)

# place the cursor on the fifth character
canvas.focus(txt)
canvas.icursor(txt, 5)

# get the position
print "cursor character position=",canvas.index(txt, INDEX)

But how do I get the canvas x,y of the cursor?

Currently I am making a binary search within the limits of the bounding box 
searching for the x,y corresponding to the character location returned by the 
index() method.

I was asking if there is an existing function like the index() but to return 
the x,y position in the canvas.

Cheers
Vasilis

-----Original Message-----
From: micko.mad...@gmail.com on behalf of Michael O'Donnell
Sent: Fri 4/12/2009 19:31
To: Vasilis Vlachoudis
Cc: tkinter-discuss@python.org
Subject: Re: [Tkinter-discuss] Cursor coordinates
 
Hi Vasilis,

A general method on all widgets;  w.winfo_pointerxy()

   Returns a tuple (x, y) containing the coordinates of the mouse
pointer relative  to w's root window.
   If the mouse pointer isn't on the same screen, returns (-1, -1).

Use this method on you canvas.
If you canvas is scrolled, then you need to adjust these coordinates
(since the top-left corner of the visible canvas may not be (0,0) of
the canvas coordinates)
So do something like:

        x,y=canv.winfo_pointerxy()
        x= canv.canvasx(x)
        y= canv.canvasy(y)

Note also you can bind methods to events
(not only clicks on your canas, but also movement)
When the method is called, it gets an event object as one
parameter, and this event object includes the x and y of the cursor

Mick

I am workin from memory here, so don't tak my word for it.



On Fri, Dec 4, 2009 at 4:53 PM, Vasilis Vlachoudis
<vasilis.vlachou...@cern.ch> wrote:
> Hi all,
>
> I have a canvas with some editable text (with create_text) in it.
> How can I get the cursor coordinates x,y from the canvas?
> The index() function returns only the character index, is there a way to
> convert the position of a character into x,y coordinates or bbox?
>
> Vasilis
>
> _______________________________________________
> Tkinter-discuss mailing list
> Tkinter-discuss@python.org
> http://mail.python.org/mailman/listinfo/tkinter-discuss
>

_______________________________________________
Tkinter-discuss mailing list
Tkinter-discuss@python.org
http://mail.python.org/mailman/listinfo/tkinter-discuss

Reply via email to