import Tkinter class probleme(Tkinter.Tk): def __init__(self,parent): Tkinter.Tk.__init__(self,parent) self.projectName=Tkinter.StringVar() self.curSec=0 self.nbSection=0 self.frame=None self.frames=[] self.sectionFrames=[] self.curFrame=0 self.projFrame() self.curFrame=1 self.secFrame() self.curFrame=0 self.frames.append(None) self.updateFrame() self.mainloop() def projFrame(self): self.frames.append(Tkinter.Frame()) self.frames[self.curFrame].grid Tkinter.Label(self.frames[self.curFrame],text="Project name : ").grid(row=0,column=0) Tkinter.Entry(self.frames[self.curFrame],textvariable=self.projectName).grid(row=0,column=1) Tkinter.Button(self.frames[self.curFrame],command=self.next,text="Next").grid(columnspan=2) def secFrame(self): self.frames.append(Tkinter.Frame(self,bd=2,relief=Tkinter.SUNKEN)) self.frames[self.curFrame].grid_rowconfigure(0,weight=1) self.frames[self.curFrame].grid_columnconfigure(0,weight=1) yscrollbar=Tkinter.Scrollbar(self.frames[self.curFrame]) yscrollbar.grid(row=0,column=1,sticky=Tkinter.N+Tkinter.S) canvas=Tkinter.Canvas(self.frames[self.curFrame],bd=0, yscrollcommand=yscrollbar.set) self.frame=Tkinter.Frame(canvas) canvas.grid(row=0,column=0,sticky=Tkinter.N+Tkinter.S+Tkinter.E+Tkinter.W) canvas.create_window(0,0,window=self.frame) yscrollbar.config(command=canvas.yview) self.mainCmdFrame() # # scrollbar=Scrollbar(self.frames[self.curFrame]) # scrollbar.pack(side=RIGHT,fill=Y) # # self.canvas=Canvas(self.frames[self.curFrame],yscrollcommand=scrollbar.set) # scrollbar.config(command=self.canvas.yview) # # self.canvas.create_window(0,0,window=self.frames[self.curFrame]) # self.frames[self.curFrame].update_idletasks() # self.scrollZone=self.canvas.bbox("all") # self.canvas.config(scrollregion=self.scrollZone) def next(self): self.frames[self.curFrame].forget() self.curFrame=self.curFrame+1 self.updateFrame() def previous(self): self.frames[self.curFrame].forget() self.curFrame=self.curFrame-1 self.updateFrame() def updateFrame(self): self.frames[self.curFrame].pack() def mainCmdFrame(self): frame=Tkinter.Frame(self.frames[self.curFrame]) Tkinter.Button(frame,command=self.addSectionGui,text="Add section").pack(side=Tkinter.RIGHT) Tkinter.Button(frame,command=self.previous,text="Previous").pack(side=Tkinter.LEFT) Tkinter.Button(frame,command=self.removeSectionGui,text="Remove section").pack(side=Tkinter.RIGHT) frame.grid(row=1,column=0,sticky=Tkinter.N+Tkinter.S+Tkinter.E+Tkinter.W) def addSectionGui(self): self.sectionFrames.append(Tkinter.LabelFrame(self.frame,text="Section #"+str(self.nbSection+1))) Tkinter.Label(self.sectionFrames[self.nbSection],text="Name : ").grid(row=0,column=0) Tkinter.Entry(self.sectionFrames[self.nbSection]).grid(row=0,column=1) Tkinter.Button(self.sectionFrames[self.nbSection],text="Functions",command=lambda i=self.nbSection:self.funcFrame(i)).grid(row=0,column=2) self.sectionFrames[self.nbSection].pack() self.frame.pack() self.nbSection=self.nbSection+1 self.updateFrame() def removeSectionGui(self): try: self.sectionFrames[self.nbSection-1].destroy() self.sectionFrames=self.sectionFrames[:self.nbSection-1] self.nbSection=len(self.sectionFrames) except IndexError: print "No section to remove" ################################################################################ # Main : launch the script ################################################################################ if __name__=="__main__": confgen=probleme(None)