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

时间:2016-06-15 20:50:16

标签: python class wxpython attributeerror

我知道这可能被认为是一个“重复问题”但是,我没有找到一个类似的问题来解决我的困境,所有其他具有相同错误的人都有不同的代码组织而不是我的。

我为我的dateFrame窗口创建了一个类,并在其中放了一个按钮,而OnClick()我想从toCtrl和fromCtrl调用GetValue(),但由于某种原因,我不断收到属性错误。不知道我哪里出错了。 OnClick()应该在类的正确范围内,以处理它中的对象。

不断收到错误:

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

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

1 个答案:

答案 0 :(得分:0)

正如@ user2357112指出的那样,我没有使用' self'正确引用我的类中的对象。

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