Trouble running a Grayson Example

David Lees deblNoNoSpammy at theworld.com
Tue Mar 6 12:14:23 EST 2001


Robert,

Thanks, you figured it out.  I made your suggested changes and the
example works fine.

David Lees


Robert Roy wrote:
> 
> On Mon, 05 Mar 2001 19:13:50 GMT, David Lees
> <deblNonOspammy at theworld.com> wrote:
> 
> >I am trying to run example 8.9 (Example_8_9.py) from Graysons book,
> >under Python 2.0 and get the following errors.  Can someone tell me what
> >is going on?  Perhaps this has to do with changes between 1.5.2 and 2.0
> >Python?
> >
> >Thanks in advance.
> >
> >david lees
> >
> >
> >Traceback (most recent call last):  File
> >"d:\Python20\Pythonwin\pywin\framework\scriptutils.py", line 301, in
> >RunScript
> >    exec codeObject in __main__.__dict__
> >  File "E:\Grayson1\Chapter08\Example_8_9.py", line 79, in ?
> >   ddnotebook = DDNotebook()
> >  File "E:\Grayson1\Chapter08\AppShell.py", line 55, in __init__
> >  self.__createInterface()
> >  File "E:\Grayson1\Chapter08\AppShell.py", line 282, in
> >__createInterface
> >   self.createInterface()
> >  File "E:\Grayson1\Chapter08\Example_8_9.py", line 75, in
> >createInterface
> >    self.createNotebook()
> >  File "E:\Grayson1\Chapter08\Example_8_9.py", line 26, in
> >createNotebook  Pmw.NoteBookR,(self.interior(),),)
> >  File "E:\Downloads\pmw\Pmw\Pmw_0_8_4\lib\PmwLoader.py", line 174, in
> >__getattr__
> >AttributeError: NoteBookR
> 
> The examples in the Grayson book were written using  an older version
> of Pmw probably 0_8_1. NoteBookR ceased to exist in 0_8_3 and you are
> using 0_8_4. There were some fundamentat changes to the way Notebook
> works.
> 
> The following code will work.
> 
>     def createNotebook(self):
> # changed Pmw.NoteBookR to Pmw.NoteBook
>         self.notebook = self.createcomponent('notebook', (), None,
>                                          Pmw.NoteBook,
> (self.interior(),),)
>         self.notebook.pack(side=TOP, expand=YES, fill=BOTH, padx=5,
> pady=5)
>         self.formwidth = self.root.winfo_width()
> 
>     def addPage(self, dictionary):
>         table, top, anchor, incr, fields, \
>             title, keylist = dataDict[dictionary]
> # there is no label attribute anymore but a tab_text attribute
> #(optional)
> #        self.notebook.add(table,label=title)
>         self.notebook.add(table, tab_text=title)
>         self.current = 0
>         ypos = top
>         idx = 0
>         for label, field, width, proc, valid, nonblank in fields:
>             pstr = 'Label(self.notebook.page(table),'\
>                    'text="%s").place(relx=%f,rely=%f, anchor=E)\n' % \
>                    (label, (anchor-0.02), ypos)
>             if idx == keylist[0]:
> # self.notebook.page(table).interior() to self.notebook.page(table)
> # did this in 3 places
>                 pstr = '%sself.%s=Entry(self.notebook.page(table),'\
>                        'text="",insertbackground="yellow",
> width=%d+1,'\
>                        'highlightthickness=1)\n' % (pstr,field,width)
>             else:
>                 pstr = '%sself.%s=Entry(self.notebook.page(table),'\
>                        'text="", insertbackground="yellow",'\
>                        'width=%d+1)\n' % (pstr,field,width)
>             pstr = '%sself.%s.place(relx=%f, rely=%f,'\
>                    'anchor=W)\n' % (pstr,field,(anchor+0.02),ypos)
>             exec '%sself.%sV=StringVar()\n'\
>                  'self.%s["textvariable"] = self.%sV' % \
>                                           (pstr,field,field,field)
>         ypos = ypos + incr
>         idx = idx + 1



More information about the Python-list mailing list