"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

Reply via email to