<snip> > class MyFrame(wx.Frame): > def __init__(self, parent, id, title): > wx.Frame.__init__(self, parent, id, title, size=(600,500)) > > nb = wx.Notebook(self) > self.page1 = Form1(nb, -1) > nb.AddPage(self.page1, "Choose Patient") > self.page1.SetFocus() > > def patient_lookup(self, first_ltrs): > self.page2 = Selectable.Repository(nb, -1, first_ltrs) > nb.AddPage(self.page2, "Patient Lookup") > self.page2.SetFocus() > <snip>
> I'm getting an error from the patient_lookup function: "global name > 'nb' is not defined". I don't understand how a function in the same > class cannot see the wx.Notebook instance "nb". I know it exists > somewhere I just haven't found the name for it. I've tried > "frame.nb", "self.nb", f = GetTopLevelParent(self) then f.nb. How can > an instance of something just disappear? > > Thanks for any help. > > Mike nb is a local variable within the __init__() method only. This is the same as, e.g.: def foo(): i = 0 def bar(): print i The use of i in bar() is an error, because it is only assigned in foo() If you want to make it available to all methods within a class then you need to attach it to the instance of that class, e.g.: class MyFrame(wx.Frame): def __init__(self, parent, id, title): wx.Frame.__init__(self, parent, id, title, size=(600,500)) self.nb = wx.Notebook(self) self.page1 = Form1(nb, -1) self.nb.AddPage(self.page1, "Choose Patient") self.page1.SetFocus() def patient_lookup(self, first_ltrs): self.page2 = Selectable.Repository(nb, -1, first_ltrs) self.nb.AddPage(self.page2, "Patient Lookup") self.page2.SetFocus() -- Alan -- http://mail.python.org/mailman/listinfo/python-list