On 10/02/17 15:56, Pooja Bhalode wrote: > root = Tk() > root.title("Design of Experiments with Parameter Estimation") > root.geometry("1000x1000") > > def DesignPoint(): > rootdesign=Tk()
You should o0nly have one root. This create a new root everytime you xcall Designpoint and even if thats only once you still have a root already at the global level. It would be better to define the function to have a root parameter that you can pass in when you call it. > rootdesign.title("Estimation of Experimental Precision for Data > Var-CoVar") > rootdesign.geometry("600x400") Are you trying to create a second window? If so you should probably use the TopLevel widget for that but with the same toplevel root. Alternatively you could create a Dialog using the Dialog module but that probably requires a bit more OOP than you seem comfortable with. > frame1 = Frame(rootdesign) > frame1.grid(row=0, column=0) > > ## Inserting Checkboxes: > label1 = Label(frame1, text="1. Design Point Suggestions") > label1.grid(row=0, column=0,sticky=W ) > var1 = IntVar() > var2 = IntVar() > var3 = IntVar() > var4 = IntVar() These vars should probably be declared and initialised outside the function. > Checkbutton(frame1, text = "Vertices", variable=var1, onvalue=1, > offvalue=0).grid(row=1, column = 1, sticky=W) > Checkbutton(frame1, text = "Edges", variable=var2).grid(row=2, column = > 1, sticky=W) > Checkbutton(frame1, text = "Faces", variable=var3).grid(row=3, column = > 1, sticky=W) > check = Checkbutton(frame1, text = "Center", variable=var4) > check.grid(row=4, column = 1, sticky=W) > check.select() > > > label2 = Label(frame1, text="2. Cut off Improvement %") > label2.grid(row=5, column=0,sticky=W) > Entry2 = Entry(frame1) > Entry2.insert(END, '05') > Entry2.grid(row=5, column = 1, sticky = W) > > label3 = Label(frame1, text="3. Simulation of proposed Experiments: ") > label3.grid(row=5, column=0,sticky=W) > > label4 = Label(frame1, text="4. Calculate sensitivities") > label4.grid(row=6, column=0,sticky=W) > The above is ok but... > def default(): > print "Inside default" > > var1.set(0) > var2.set(0) > var3.set(0) > var4.set(1) > Entry2.delete(0, END) > Entry2.insert(END,'05') You have now defined this function inside the Designpoint function. It should probably be outside except you would lose visibility of the vars - which is why they should be global. > Button(frame1, text = "Select Default value", > command=default.grid(row=0, column = 2, sticky=W) But you cannot apply grid to a function. your command should be default. In suspect you are just missing a closing parenthesis Button(frame1, text = "Select Default value", command=default).grid(row=0, column = 2, sticky=W) > rootdesign.mainloop() > > > ## Secondary menu bar: > menusec = Frame(root, bg="white") > butt1 = Button(menusec, text="Part One", command=DesignPoint) > butt1.pack(side=LEFT, padx=1) > menusec.pack(side=TOP, fill=X) > > > root.mainloop() > > It still doesn't work for me for the reason I am not able to figure out. > Please let me know. You have quite a few issues. The main things you should sort out are: 1) only use one root. 2) put the vars and default definitions outside the designpoint function. 3) add the closing parenthesis. -- Alan G Author of the Learn to Program web site http://www.alan-g.me.uk/ http://www.amazon.com/author/alan_gauld Follow my photo-blog on Flickr at: http://www.flickr.com/photos/alangauldphotos _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor