wxPython: 属性错误 *class* 没有属性 *class_object*

wxPython: Attribute Error *class* has no attribute *class_object*

我知道这可能被认为是一个 'repeat question' 但是,我还没有找到一个类似的问题来回答我的困境,所有其他有同样错误的人的代码组织与我的不同。

我为我的 dateFrame window 制作了一个 class 并在其中放了一个按钮,然后 OnClick() 我想从 toCtrl 和 fromCtrl 调用 GetValue() ,但出于某种原因我保留了获取属性错误。不知道我哪里出错了。 OnClick() 应该在 class 的正确范围内以处理其中的对象。

不断出现错误:

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

这是我的 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()

正如@user2357112 所指出的,我未能正确使用 'self' 来引用我的 Class 中的对象。

有关详细信息,请参阅上面评论部分中@rrauenza 提供的link。