On Aug 1, 2010, at 8:33 PM, rechardchen wrote: > δΊ 2010-8-2 6:15, Chris Hare ει: >> I hope I can explain this correctly. >> >> I have a GUI, which is already being processed by a mainloop. I want to be >> able to open a second window so the user can interact with specific >> information in the second window. I pulled together this code example >> >> from Tkinter import * >> >> class Net: >> def __init__(self,tkWin): >> self.window = tkWin >> def show(self,t): >> self.l = Label(self.window,text=t) >> self.l.grid() >> button = Button(self.window, text="Again") >> button.bind("<Button-1>", self.Again) >> button.grid() >> def Again(self,event): >> win3 = Tk() >> x = Net(win3) >> x.show("window 3") >> >> root = Tk() >> root.title = "test" >> f = Frame(root,bg="Yellow") >> l = Label(f,text="window 1") >> f.grid() >> l.grid() >> >> win2 = Tk() >> x = Net(win2) >> x.show("window 2") >> if __name__ == "__main__": >> root.mainloop() >> >> Is this the right way to do things, or would you suggest something different? >> >> Thanks, >> Chris >> > Using Tkinter.Toplevel may be better. :) > -- > http://mail.python.org/mailman/listinfo/python-list
I thought that would be a good idea, so I changed the code a bit to this: from Tkinter import * class Net: def __init__(self): self.window = Toplevel() def show(self,t): self.l = Label(self.window,text=t) self.l.grid() button = Button(self.window, text="Again") button.bind("<Button-1>", self.Again) button2 = Button(self.window, text="Dismiss") button2.bind("<Button-1>", self.window.destroy) button.grid() button2.grid() def Again(self,event): x = Net() x.show("window 3") root = Tk() root.title = "test" f = Frame(root,bg="Yellow") l = Label(f,text="window 1") f.grid() l.grid() x = Net() x.show("window 2") if __name__ == "__main__": root.mainloop() I put the call to Topevel into the Class. This however, gets me an error message Traceback (most recent call last): File "a.py", line 27, in <module> x = Net() File "a.py", line 5, in __init__ self.window = Toplevel() File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk/Tkinter.py", line 1978, in __init__ self.title(root.title()) TypeError: 'str' object is not callable I should think it would work, but I don't understand why it doesn't. Thanks -- http://mail.python.org/mailman/listinfo/python-list