471,091 Members | 1,547 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 471,091 software developers and data experts.

tear-off buttons for Tkinter Text objects?

Hi. I've embedded some buttons in a Text object, and I would like these
buttons to perform a 'tear-off' of that line when clicked. That is, when the
button is clicked, I would like a new Toplevel to appear with a new Text
object which contains the text. Creating a 'pop-off' button, where the
Toplevel appears at some predetermined (or calculatable) point would be
easy, I'd just create the Toplevel, position it, and pass the info to it.
The difference would be that the 'tear-off' button would automatically
'grab' the new Toplevel so that it could be easily repositioned in the same
motion of the mouse.

There are three benefits to this that make it worthwhile. One, obviously
repositioning is one mouse click easier. Two, I'll also add code to dock the
lines, so re-docking a mistaken tear-off would be easier as well. Three, its
just cool.

So is there maybe some way to trick the window manager into thinking there's
been a mouse click? It would be easy enough to position the title bar of the
new Toplevel under the cursor. Or can the new window just be (magically)
bound to the cursor until the button-pressing click is released? Any help
would be appreciated.

Thanks,

Deacon Sweeney
Jul 18 '05 #1
1 2009
Deacon Sweeney wrote:
Hi. I've embedded some buttons in a Text object, and I would like these
buttons to perform a 'tear-off' of that line when clicked. That is, when the button is clicked, I would like a new Toplevel to appear with a new Text
object which contains the text. Creating a 'pop-off' button, where the
Toplevel appears at some predetermined (or calculatable) point would be
easy, I'd just create the Toplevel, position it, and pass the info to it.
The difference would be that the 'tear-off' button would automatically
'grab' the new Toplevel so that it could be easily repositioned in the same motion of the mouse.


this approach should work:

- add custom event handlers for button press, mouse motion, and button
release.

- in the button press handler, register the current mouse coordinates
(relative to
the root window), create the toplevel, and position it in a suitable
location. also
grab the mouse pointer (to make sure you get all mouse events)
(autograbbing
may take care of that, but a little explicitness never hurts)

- in the mouse motion handler, calculate the difference between the current
mouse position and the last registered position, and move the toplevel
accordingly

- in the mouse release handler, release the grab (if necessary)

</F>


Jul 18 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.