[Tkinter-discuss] Re: String-names and the NoteBook entryfield

Martin Franklin mfranklin1 at gatwick.westerngeco.slb.com
Wed Sep 22 09:21:09 CEST 2004


On Tue, 21 Sep 2004 02:38:54 GMT, Chris Nethery <clnethery at juno.com> wrote:

>
> Hello everyone.  I have an issue that is causing me many anxious  
> moments.  So, at long last, I feel I need to refer to the experts.
>
> I am trying to create a Pmw.NoteBook instance that the user names as  
> he/she creates it.  Specifically, I am trying to enable the user to name  
> the NoteBook instance in its own entryfield, similar to creating a new  
> Tree node in Windows Explorer or a new Windows folder or shortcut icon,  
> for example.  Secondly, I am having a hard time associating the input  
> string name with the NoteBook instance.  Unfortunately, I have gone  
> through many cycles trying to make things work, and the code has broken  
> each time, so I have included just the base code that (almost) works.   
> Any ideas on this one?
>
> Thanking you in advance,
>
>
> Christopher Nethery
>
>

Chris,

I snipped all your code sorry but here is my first stab at the problem you  
outlined



 from Tkinter import *
import Pmw



class MegaNoteBook(Frame):
     def __init__(self, parent):
         Frame.__init__(self)

         addButton = Button(self, text="Add Page", command=self.addPage)
         addButton.pack()
         self.noteBook = Pmw.NoteBook(self)
         self.noteBook.pack(fill="both", expand="yes")


     def addPage(self):
         ## method to add a page to the notebook - I need to change the  
'button' tab
         ## property of the nbotebook
         thisPage = self.noteBook.add("NewPage")
         ## find the button widget for this page bind to
         thisTab = self.noteBook.tab("NewPage")
         ##it's text put up an entry field so the user can edit it
         self.update()
         x, y = thisTab.winfo_rootx(), thisTab.winfo_rooty()
         entry = MegaEntryField(x, y, self)

     def setNewPageName(self, name):
         print name

class MegaEntryField(Toplevel):
     def __init__(self, topx, topy, megaNoteBook):
         Toplevel.__init__(self)
         self.overrideredirect(True)
         self.geometry("+%d+%d" %(topx, topy))
         self.megaNoteBook = megaNoteBook
         self.entry = Pmw.EntryField(self, entry_width = 7,  
command=self.renamePage)
         self.entry.setentry("NewPage")
         self.entry.pack() ## ?? should size accordingly

     def renamePage(self):
         name = self.entry.get()
         self.megaNoteBook.setNewPageName(name)
         self.withdraw()



root=Tk()
mnb = MegaNoteBook(root)
mnb.pack(fill="both", expand="yes")
root.mainloop()



-- 
Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/



More information about the Tkinter-discuss mailing list