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
sys.path.append('~/PyPrograms/EMRGUI')
import Selectable

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


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
pages
        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
results
        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.Size(140,-1))
        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.

Mike
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to