On Tuesday 16 January 2007 16:25, johnf wrote: > On Tuesday 16 January 2007 15:28, Ed Leafe wrote: > > On Jan 16, 2007, at 2:05 PM, johnf wrote: > > > OK I'm back where I started. I'm again asking how to call a form > > > class from > > > within form function. But below is the app. > > > import os > > > import inspect > > > import dabo > > > import johnClasses > > > > [snip] > > > > > A function in the form > > > def lookup(): > > > new_frm = johnClasses.TestForm() > > > new_frm.showModal() > > > > OK, based on what you wrote, the form that contains this lookup > > function is a cdxml, right? That means that it is separate from the > > program in which you define and run the app. > > OK that sort of makes sense. This is sort like > run program > And I am expecting the program to know about my classes. I guess my issue > is why is cdxml separate? > > Does that mean my forms (form1.cdxml and form1.cdxml) can't talk to each > other? Does it also mean that each of the forms is independent of the > starting program? Actually, I don't see how to open the second form > without calling it from form1. So I think the two forms can talk to each > other though the call. But does form2 see any of form1 imports? > > > You simply need to get this whole namespace thing down, and what > > happens when you use the import function. The simple answer to your > > problem would be to add 'import johnClasses' to your cdxml's 'Manage > > Imports' dialog, which will then make the 'johnClasses' name > > available in the form's namespace. > > Thanks that fixed the issue I was having of course. It placed the import > statement in the "formName-Code.py" file. I have been reading namespace > stuff for about an hour. Each of the tutorials explains that the use of > self and that imports are available to the program. > > So could I have done something like this: > > import dabo > import johnClasses > def main(): > app = dabo.dApp() > app.johnClasses = johnClasses > > Now app has the info and I should be able to call > new_frm = app.johnClasses.TestForm() > new_frm.show() > > > If I could draw an analogy to VFP, you're thinking of Python's > > import as being similar to SET PROCEDURE TO, in that once it's set, > > it's available everywhere. It's actually closer in scope to VFP's > > #DEFINE statement, which only works in the prg/class in which it is > > declared. > > that also makes sense. > > And I'm not giving up - just not understanding what happening in the code. > I was hoping that seeing hand generated code would help me understand. But > Paul's code worked as I would have expected. It's Dabo's code that does > not. I should have said the cdxml stuff that does not.
I wonder if what I'm missing is the fact that somewhere the wxPython app loop is started. And it is what is causing the new namespace area?? As you can see I don't understand what I'm talking about. But it may not matter since now I can use my imports. -- John Fabiani _______________________________________________ Post Messages to: [email protected] Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-dev
