Namespace troubles

barronmo barronmo at
Fri Nov 16 21:51:44 CET 2007

I'm new to programming and new to Python; namespace issues are getting
the best of me.  Can someone help me with the following:

import wx
import sys
import Selectable

class MyApp(wx.App):
    def __init__(self):
        frame = MyFrame(None, -1, 'EMR')		#create instance of MyFrame
        frame.Show(True)				#make visible and center frame

class MyFrame(wx.Frame):
    def __init__(self, parent, id, title):
	wx.Frame.__init__(self, parent, id, title, size=(600,500))

        nb = wx.Notebook(self)				#create instance of wx.Notebook
	self.page1 = Form1(nb, -1)			#create instance of panel Form1 with
Notebook instance as parent
	nb.AddPage(self.page1, "Choose Patient")	#add the panels as Notebook
	self.page1.SetFocus()				#give focus to page 1

    def patient_lookup(self, first_ltrs):		#passes first letters of
last name and creates new page c results
	self.page2 = Selectable.Repository(nb, -1, first_ltrs)	#creates
instance of panel Repository from Selectable mod
	nb.AddPage(self.page2, "Patient Lookup")	#adds second page with
	self.page2.SetFocus()				#give focus to new page

class Form1(wx.Panel):
    def __init__(self, parent, id):
        wx.Panel.__init__(self, parent, id)		#inherits from wx.Panel
	f = wx.GetTopLevelParent(self)
        self.button = wx.Button(self, 10, "Search", wx.Point(200,
325))	#create instance of wx.Button
	wx.Button.SetTransparent(self.button, 100)			#experiment with
SetTransparent method
        self.lblname = wx.StaticText(self, -1, "Enter first letters of
last name:",wx.Point(20,60))
        self.editname = wx.TextCtrl(self, 20, "", wx.Point(150, 60),
        wx.EVT_BUTTON(self, 10, f.patient_lookup(self.editname.Value))
#calls function to get list of patients

app = MyApp()						#create instance of MyApp
app.MainLoop()						#run program

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.


More information about the Python-list mailing list