[wxPython] wxMDIChildFrame
Mike C. Fletcher
mcfletch at rogers.com
Thu Apr 3 11:18:55 EST 2003
Normally the best place to ask questions about wxPython is on the
wxPython-users list.
Regarding your question (this is going to sound pedantic, 'cause I'm
trying to show how you would solve the problem, more than the particular
solution):
The problem you're describing can be thought of this way:
What is the current focus of the application/user when they are
issuing this command via the menu? That is, which particular
view/window should be considered (part of) the "context" of the
action?
Current GUI libraries, including wxPython, embody a concept called
"focus", which is essentially a pointer to the currently-active
control/window (there are all sorts of problems with the "single
focus" model when you get into multi-modal interfaces, but you
probably don't care about that. Single focus is the norm in WIMP
interfaces, and wxPython is definitely a WIMP interface engine).
* wxWindow::FindFocus()
Note also that windows/controls are able to retrieve references to
their parents:
* wxWindow::GetParent()
Then realise that you can test whether a particular window is an
instance of your image-holding-frame just by doing a standard Python
isinstance(...) test.
With that, you can walk up the sequence of parents of the
currently-focused control looking for a window of your
wxMDIChildFrame class. That's then usable as (part of) the context
of your menu action. You can see this pattern in a number of
places, it's dirt-common. I've built a few of these mechanisms over
the years, works quite nicely, however...
Consider that this is a very common operation which is critical for
the proper operation of MDI interfaces and wonder why people
wouldn't have a built-in method for doing this stuff ;) :
Then, poke around in the wxMDIParentFrame documentation for
"GetActiveChild"
Smile so the depressed half of the world considers you a threat :) ,
Mike
Roro wrote:
>Hello everybody,
>
>I want to create a window with others windows inside : My goal is to open
>several Images and apply filters on it.
>
>In concrete terms, my main window is with a bar menu : I click on 'Open
>File' Item and select images witch I wanna see.
>And I open Images in a window by image, and I use wxMDIParentFrame and
>wxMDIChildFrame to create my windows.
>
>
>To create Windows, I use these lines :
>
> def OnNewWindow(self, evt, ):
> / Open Dialog window witch ask witch files to open
> /
> self.winCount = self.winCount + 1
> self.win = wxMDIChildFrame(self, Self.winCount+100, "Child Window:
>%d" % self.winCount)
> / ...
> /
> self.win.Show(true)
>
>The problem comes now, I want to select a window and apply a filter on it
>(filters are in my menu bar). So, I want to select image's window, click in
>the menu bar the filter and see the result in the selected window.
>I can only apply my filter on the last opened window. the others windows
>become ghost-windows (I can see them but i can't kill them). I think, it's
>because 'win' points on the last window and run over the previous created
>window.
>I want to manage my windows, but I didn't find any solution.
>
>Is it possible to create an indirection for 'win', by passing an argument
>with the new name for the window ?
>Can I use 'Self.winCount' to refer to my ghost-windows ? Using their ID
>number ?
>
>
>Thanks in advance for any help.
>
>
>
>
--
_______________________________________
Mike C. Fletcher
Designer, VR Plumber, Coder
http://members.rogers.com/mcfletch/
More information about the Python-list
mailing list