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