我知道这可能被认为是一个“重复问题”但是,我没有找到一个类似的问题来解决我的困境,所有其他具有相同错误的人都有不同的代码组织而不是我的。
我为我的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()
答案 0 :(得分:0)
正如@ user2357112指出的那样,我没有使用' self'正确引用我的类中的对象。
有关详细信息,请参阅上面评论部分中@rrauenza提供的链接。