Tkinter and dialogs
madpython
madpython at gmail.com
Sat Jul 8 12:13:18 EDT 2006
dwelch91 wrote:
> I'm trying unsuccessfully to do something in Tk that I though would be
> easy.
It is easy.
> The basic idea is that my application will consist of a series of modal
> dialogs, that are chained together in "wizard" fashion.
Didn't have time to get into the code you posted. Just think that the
solution I use might be of some help.
#!/usr/bin/env python
import Tkinter
class PrevNextPane(Tkinter.Frame):
def __init__(self,master):
self.master=master
Tkinter.Frame.__init__(self,master)
self.prvBtn=Tkinter.Button(self,text="Prev",command=self.do_prev).grid(row=0,column=0)
self.nxtBtn=Tkinter.Button(self,text="Next",command=self.do_next).grid(row=0,column=1)
def do_next(self):
self.master.paneNumber+=1
self.master.displayPane()
def do_prev(self):
self.master.paneNumber-=1
self.master.displayPane()
class Pane0(Tkinter.Frame):
def __init__(self,master):
Tkinter.Frame.__init__(self,master)
for i in range(5):
Tkinter.Entry(self).grid(row=i,column=0)
class Pane1(Tkinter.Frame):
def __init__(self,master):
Tkinter.Frame.__init__(self,master)
for i in range(5):
Tkinter.Label(self,text="Label %s"% i).grid(row=i,column=0)
class Pane2(Tkinter.Frame):
def __init__(self,master):
Tkinter.Frame.__init__(self,master)
for i in range(5):
Tkinter.Button(self,text="BtnPane2-%s"%
i).grid(row=i,column=0)
class Wizard(Tkinter.Tk):
def __init__(self):
Tkinter.Tk.__init__(self)
self.topPane=None
self.prevNextPane=PrevNextPane(self).pack(side=Tkinter.BOTTOM)
self.paneNumber=0
self.displayPane()
def displayPane(self):
if self.topPane!=None:
self.topPane.forget()
try:
self.topPane=globals()["Pane%s"% self.paneNumber](self)
except KeyError:
pass
self.topPane.pack(side=Tkinter.TOP)
if __name__=="__main__":
w=Wizard()
w.mainloop()
More information about the Python-list
mailing list