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。
我知道这可能被认为是一个 '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。