"bwobbones" wrote:
> I'm having trouble making __import__ work with the two classes attached. The
> PrintHello() method
> can't be seen in the BMTest2 class - what am I doing wrong here?
in those three lines, most about everything, I'd say ;-)
let's see, "PrintHello" is a method of the BMToolBar class. to call a method,
you need
an instance of that class, which is what the "works just fine" line you've
commented out
attempts to create (except that it won't work, because that class is defined in
another
module). instead, you import the module using the __import__ implementation
hook
rather than a plain "import", and then you attempt to call a method on an
object that
doesn't exist.
> ****************************
> class one - BMTest - in BMTest.py:
> ****************************
> import wx
> from traceback import print_exc
>
> class ImportTest(wx.Frame):
> def __init__(self):
> wx.Frame.__init__(self, None, -1, "ImportTest",
> size = (666,480), style = wx.DEFAULT_FRAME_STYLE)
here comes the confusing part:
> #tb = BMToolBar(self) # works just fine!
> tb = __import__('BMTest2')
> tb2.PrintHello()
things should work a bit better if you replace these three lines with
import BMTest2
tb = BMTest2.BMToolBar(self)
tb.PrintHello()
(import the module holding the class, create an instance of the class, and call
a
method on that instance)
> class MyApp(wx.App):
> def __init__(self, flag):
> wx.App.__init__(self, flag)
> def OnInit(self):
> frame = ImportTest()
> self.SetTopWindow(frame)
> return True
> if __name__ == '__main__':
> try:
> app = MyApp(False)
> app.MainLoop()
> except:
> print print_exc()
>
> **************************
> class 2 BMTest2 - in BMTest2.py:
> **************************
> import wx
>
> class BMToolBar(wx.ToolBar):
> def __init__(self, parentFrame):
> wx.ToolBar.__init__(self, parentFrame, -1,
> style=wx.TB_HORIZONTAL|wx.NO_BORDER|wx.TB_FLAT|wx.TB_TEXT)
> print "*** gday ***"
> self.Realize()
> def PrintHello(self):
> print "Hello"
</F>
--
http://mail.python.org/mailman/listinfo/python-list