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

Reply via email to