I can't figure out how wx python can pop windows to the front. My
basic problem is that I have three windows. If the user clicks on any
of them, I want all three to pop to the front of all the windows (and
uniconify if they are) and focus to go to a specific one (even if not
the one clicked on). I'm sure wx can do it, but I can't find it
anywhere.
How about, after catching an EVT_ACTIVATE event in a handler on any
frame, then using window.Raise() and window.SetFocus(), in a loop
through a list of the extant frames? Something like that. (.SetFocus
might only really work on an object that can accept focus...not
totally sure about that).
On Fri, May 13, 2011 at 11:27 PM, William D. Colburn (Schlake) <schlake@gmail.com> wrote:
I can't figure out how wx python can pop windows to the front. My
basic problem is that I have three windows. If the user clicks on any
of them, I want all three to pop to the front of all the windows (and
uniconify if they are) and focus to go to a specific one (even if not
the one clicked on). I'm sure wx can do it, but I can't find it
anywhere.
How about, after catching an EVT_ACTIVATE event in a handler on any
frame, then using window.Raise() and window.SetFocus(), in a loop
through a list of the extant frames? Something like that. (.SetFocus
might only really work on an object that can accept focus...not
totally sure about that).
Well, I got some spectacular crashes!
I can't Focus() a frame, so that doesn't work. And moving one of the
windows causes infinite recursion. But moving the other windows is
fine.
So, I wrapped it in a test to see if it is already inside the callback
I made, and that fixes it. Raise()ing the window that is supposed to
have focus last causes it to have focus just like I want. But an
iconified window isn't popped up. What does wx call it's pop up
method? All I can find is to pop up a menu item.
have focus last causes it to have focus just like I want. But an
iconified window isn't popped up. What does wx call it's pop up
method? All I can find is to pop up a menu item.
One way to find this is is you Google "wxFrame" and see there is no
method related to icons or such...so you try a higher level by looking
at the top part of the doc where it says, "Derived from" and then
you'd choose the first in that list--in this case, wxTopLevelWindow.
Then you may find the method you need.
The other trick I find very useful goes like this:
Open a command prompt,
type: **
python
import wx
frame=wx.Frame
d=dir(frame)
for i in d:
if i.lower().find(‘icon’) > -1:
print i**
this this gives me: GetIcon Icon Iconize IsIconized SetIcon SetIcons
then if I type:
**help(frame.Iconize)
** I get:
_Help on method Iconize in module wx._windows: