Thank you Martin,
but I've still troubles, because the tab has the new name now, but the page
is in PMW still known with the old name.
I see this because I've registered for the raisecommand event:
def _onSelect_(self, pageName):
Proxy.DataProxy().containerSelect(pageName)
return
And here pageName is the old name despite the fact that the new name is
displayed on the tab.
Kind regards
Franz GEIGER
Martin Franklin said:
On Tue, 2003-09-30 at 14:49, F. GEIGER wrote:
Hi again,
I'd like to rename a page of a notebook. Deleting the page and
adding a
new
one is not really an option, because the page is filled with other controls
already. So I looked into Pmw.Notebook. There are quite a few lists and
dicts which were to be changed and I wasn't successful in the first try.
However, if nobody has ever done this, I'd have to rebuild the whole page
after deleting/adding. I really hope there's an other way to go.
Kind regards
Franz GEIGER
You need to get hold of the "tab" widget and change it's text.
nb = Pmw.NoteBook(root)
nb.pack()
nb.add("Page1")
nb.add("Page2")
nb.add("Page3")
tab = nb.tab("Page1")
tab["text"]= "Martin1"
I've been trying to 'get round' this..... without much success
internally the NoteBook keeps track of it's pages using both a list of
names and a dictionary of name : page attributes
so I thought you could mess around with these...
notebook._pageAttrs[newname] = notebook._pageAttrs[oldname]
notebook.tab(oldname)["text"]=newname
notebook._pageNames[index]=newname
del notebook._pageAttrs[oldname]
However when you try to raise your newly renamed page it fails :-(
because the callback that lifts the page to the top has the page name
stuck in it like so:
if self._withTabs:
# Create the button for the tab.
def raiseThisPage(self = self, pageName = pageName):
self.selectpage(pageName)
tabOptions['command'] = raiseThisPage
Where pageName is the name given at the time the page was created
(the above code is from the insert method in PmwNotebook)
So you would have to do quite a lot of messing around....
replacing the above callback with your own at least... This is where I
stopped trying...