Martin Drautzburg wrote:
My wxPython program starts execution in mainFrame.py like this
        def main():
                global application
                application=MainApp(0)
                application.MainLoop()

I need to access the "application" object from other modules, actually
the windows and frames that live therein and I don't know how to do
this.

I tried using "global", but that does not seem to help. In the other
module I run an "import mainFrame" and that seems to reset the global
variables.

Am I missing something obvious?

Not exactly obvious, perhaps, but well-defined. When you run a Python script, the first script executed (the one specified on the command line) is given the name __main__ in the list of loaded modules (sys.modules, specifically). If you do an "import mainFrame", you are actually loading a second copy of the module into memory, under a different name.

The solution to your specific problem, without changing any
of the structure of your program, is to do "import __main__"
instead, but that's ultimately not likely the best solution.

One slightly better solution would be to create a special
empty module, just for holding "application globals" like
this, say "globals.py".  Then you can import that in your
main script, and do "globals.application = MainApp(0)",
then import the same name elsewhere and work with it as you
are trying to.

An even better approach might be to find a way to avoid
having to access the main window through a global, but
I'll have to leave this up to you, as it may depend on
your program structure.

-Peter
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to