1

I am aware this might be considered a 'repeat question' however, I haven't found a similar question that answers my predicament, all the other folks with the same error had different looking code organization than mine.

I made a class for my dateFrame window and put a button in it, and OnClick() I want to call GetValue() from toCtrl and fromCtrl, but for some reason I keep getting attribute errors. Not sure where I've went wrong. OnClick() should be in the correct scope of the class to work with the objects from it.

Keep getting error:

AttributeError: 'dateFrame' object has no attribute 'toCtrl'

Here is my class dateFrame():

class dateFrame(wx.Frame):
    global toText, fromText
    def __init__(self):


        wx.Frame.__init__(self, None, -1, 'Date Search', size=(350, 150))
        panel = wx.Panel(self, -1) 
        fromLabel = wx.StaticText(panel, -1, "From Date:", (300, 500), (110, -1), wx.ALIGN_CENTER)
        fromCtrl = wx.TextCtrl(panel, -1, "Example: 1/11/11", style=wx.TE_CENTRE, size=(150, -1))

        toLabel = wx.StaticText(panel, -1, "To Date:", (100, 200), (110, -1), wx.ALIGN_CENTER)


        toCtrl = wx.TextCtrl(panel, -1, "Example: 2/22/22", style=wx.TE_CENTRE, size=(150, -1))
        sizer = wx.FlexGridSizer(cols=2, rows = 3, hgap=6, vgap=6)
        sizer.AddMany([fromLabel, fromCtrl, toLabel, toCtrl])

        #sizer1.AddStretchSpacer(1)
        #sizer1.Add(panel, 0, wx.ALIGN_CENTER)
        #sizer1.AddStretchSpacer(1)
        #self.SetSizer(sizer1)

        panel.SetSizer(sizer)    

        b = wx.Button(panel, 10, "Search", (120, 70))
        panel.Bind(wx.EVT_BUTTON, self.OnClick, b)
        b.SetDefault()
        b.SetSize(b.GetBestSize())


    def OnClick(self, event):
        global frame, dFrame
        toText = self.toCtrl.GetValue()
        fromText = self.fromCtrl.GetValue()

        frame.Destroy()
        frame = TestFrame(None, sys.stdout)
        frame.Show(True)
        dFrame.Destroy()
Alex Elkman
  • 63
  • 1
  • 8

1 Answers1

0

As pointed out by @user2357112, I had failed to use 'self' correctly to reference the objects within my Class.

For more information, see the link provided by @rrauenza in the comments section above.

Alex Elkman
  • 63
  • 1
  • 8