[Tutor] Sharing Variables Across Modules

Rich Shepard rshepard at appl-ecosys.com
Tue Feb 7 02:51:00 CET 2006


   I'm developing a wxPython-based application. The UI is a notebook, with the
contents of each page in a separate module. In one module (modelPage.py), I
have defined the class modModel, which is an instance of a wx.Panel class.
Within modModel is a text control widget named tcName.

   The main module, eikos.py, imports modModel from modPage.py. The main
module has two classes: MyNotebook (subclassed from wx.Notebook) and MyFrame,
which contains the notebook and menus.

   The File->New menu calls the method OnFileNew. This displays a directory
dialog so the user can select the directory in which the new file is to be
placed. Then it displays a text entry dialog for the name of the new file.

   I am able to enter the new file name and it is correctly assigned to the
variable, projname. What I have not been able to do is have that same
filename displayed in the text control widget, tcName. Here is OnFileNew from
the main module:

   def OnFileNew(self, event):
     """ Create a new file and open it."""
     self.dirname = ''
     wd = wx.DirDialog(self, "Chose the default directory", ".",
style=wx.DD_NEW_DIR_BUTTON)
     if wd.ShowModal() == wx.ID_OK:
       dirname = wd.GetPath()
       ted = wx.TextEntryDialog(self, "Enter the project name", "New Project Name", "",
                                style=wx.RAISED_BORDER|wx.OK|wx.CANCEL)
       if ted.ShowModal() == wx.ID_OK:
         projname = ted.GetValue()
         tcName = self.modModel.tcName
         tcName.WriteText(self, projname)
         ted.Destroy()
       wd.Destroy()

   While projname has the correct string, tcName remains undefined:

   File "eikos.py", line 272, in OnFileNew
     tcName = self.modModel.tcName
AttributeError: 'MyFrame' object has no attribute 'modModel'

   How do I make tcName visible in eikos.py when it's defined in modelPage.py?

Rich

-- 
Richard B. Shepard, Ph.D.               |   Author of "Quantifying Environmental
Applied Ecosystem Services, Inc. (TM)   |  Impact Assessments Using Fuzzy Logic"
<http://www.appl-ecosys.com>     Voice: 503-667-4517         Fax: 503-667-8863







More information about the Tutor mailing list