tags:

views:

50

answers:

1

I have been trying, without success, to control an object within a class from without such class. These are the important bits (not the whole thing!)

def GOGO():                    ################################################ 
    VFrame.SetStatusText("Ok") # ----> THIS IS WHAT I AM TRYING TO FIX        #
                               # ----> I have tried all sorts of combinations #
                               # ----> and I still can't change this property #
                               ################################################
                               # How do I fix this? What am I doing wrong???  #
                               ################################################
class VFrame(wx.Frame):
    def __init__(self, parent):
        wx.Frame.__init__(self, parent, -1, _("Glob"), 
                          size=(1024, 768), style=wx.DEFAULT_FRAME_STYLE)
        self.SetStatusText("Ready - Disconnected from Database.")

class MySplashScreen(wx.SplashScreen):
    def __init__(self, parent=None):
        aBitmap = wx.Image(name=img_splash).ConvertToBitmap()
        splashStyle = wx.SPLASH_CENTRE_ON_SCREEN | wx.SPLASH_TIMEOUT
        splashDuration = 50
        wx.SplashScreen.__init__(self, aBitmap, splashStyle, splashDuration, parent)
        self.Bind(wx.EVT_CLOSE, self.CloseSplash)
        wx.Yield()
    def CloseSplash(self, evt):
        self.Hide()
        frame = VFrame(parent=None)
        app.SetTopWindow(frame)
        frame.Show(True)
        evt.Skip()

class MyApp(wx.App):
    def OnInit(self):
        MySplash = MySplashScreen()
        MySplash.Show()
        return True

if __name__ == '__main__':
    app = MyApp()
    app.MainLoop()
+1  A: 

You need to instantiate your VFrame class.

frame = VFrame(parent)
frame.SetStatusText("OK")

This is mostly syntactic sugar for

frame = VFrame(parent)
VFrame.SetStatusText(frame, "OK")

Essentially, you have to tell the computer which VFrame's status text you want to set.

Nathon
In order to fix the problem, in addition to your suggestion, I introduced "global frame" in within def CloseSplash.
relima