johnf wrote:
> On Tuesday 16 January 2007 11:35, Paul McNett wrote:
>> johnf wrote:
>>> import dabo
>>> import johnsClasses
>>>
>>> Then within a form I could say something like
>>> new_frm = johnsClasses.MydialogClass() #if this wrong say so please
>>> new_frm.show()
>>>
>>> I was sure I was right - but it does not work. I'm missing something or
>>> coding something wrong.
>> johnsClasses is a name in the main module's namespace. It exists only in
>> that namespace. You need to explicitly import it into any other modules,
>> for instance your form.
>>
>> I don't know how the imports for the cdxml files work, if there's one
>> place where you can put them, but in any case it will work to just put
>> an 'import johnsClasses' inside the form method where you want to
>> instantiate that dialog.
>
>
> So then the proper place is to import in the "afterInitAll" for each and
> every form? That seems wrong to me. I'm back to where is my universal way
> to get my classes into the app.
Python imports into namespaces.
> I'm still looking for "set classlib additive" and have access from any form.
> So if I do place an import statement into each form will I end up with multi
> copies of myclass in memory or just one? As I currently understand it python
> checks to see if the module is in memory and uses it. Is that right?
Python doesn't reexecute already-imported modules, so that is right.
> OK maybe I need to hand code this. So would one you please provide a simple
> hand coded example that opens a form, then calls a form from an event or form
> function. The form does not need to be anything special - just a textbox
> with a button to call the second form.
#-- Here it is all in one file:
import dabo
dabo.ui.loadUI("wx")
class MyTestDialog(dabo.ui.dDialog):
pass
class MyMainForm(dabo.ui.dForm):
def afterInit(self):
self.addObject(dabo.ui.dButton, Caption="Hit Me",
OnHit=self.onButtonHit)
def onButtonHit(self, evt):
dlg = MyTestDialog()
dlg.show()
dlg.release()
if __name__ == "__main__":
app = dabo.dApp(MainFormClass=MyMainForm)
app.start()
## - end example one.
In the following example, we split MyTestDialog and MyMainForm into
their own files, so there are 3 files (main.py, MyTestDialog.py, and
MyMainForm.py)
##- Begin main.py
import dabo
import MyMainForm
app = dabo.dApp(MainFormClass=MyMainForm.MyMainForm)
app.start()
##- End main.py
##- Begin MyTestDialog.py
import dabo
dabo.ui.loadUI("wx")
class MyTestDialog(dabo.ui.dDialog):
pass
## - End MyTestDialog.py
## - Begin MyMainForm.py
import dabo
import MyTestDialog
dabo.ui.loadUI("wx")
class MyMainForm(dabo.ui.dForm):
def afterInit(self):
self.addObject(dabo.ui.dButton, Caption="Hit Me",
OnHit=self.onButtonHit)
def onButtonHit(self, evt):
dlg = MyTestDialog.MyTestDialog()
dlg.show()
dlg.release()
##- End MyMainForm.py
Notice how each file needed to import stuff that may have been imported
already in another of the files.
> Added question: Is there a utility that converts cdxml files to python
> wxPthon code and allows me to save the code to a file?
Not that I know of.
--
pkm ~ http://paulmcnett.com
_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-dev