Why is Pmw.Blt sending Destroy messages to my Toplevel?

Phlip phlip_cpp at my-deja.com
Thu Aug 15 17:47:10 CEST 2002


"Jeffrey Hobbs" wrote:
> Phlip wrote:
> ...
> > This really distracts because I need to bind to <Destroy> and perform
> > exit procedures. But these fire whenever Blt draws a line!
>
> Whenever you create a toplevel <Destroy> binding, you need to check
> that it is firing against the actual toplevel.  This is because the
> toplevel is in the bindtags of all its children, thus a <Destroy>
> that occurs for any child will propagate to the top by default.

This don't work:

def closing(event):
    if event.widget is frame:
        print 'closing!', event.type

It doesn't work because event.widget is some kind of string, while frame is
an object.

This, unfortunately, works:

def closing(event):
    if len(event.widget) == len('.12345678'):
        print 'closing!', event.type

In other words, I can tell if the widget is on top because the string
describing its address in the local window tree is short.

This sucks, but it works. Thanks for the confirmation!

--
  Phlip





More information about the Python-list mailing list