Hi, Thanks for the help.
I was trying to find a book "Python TK" something on last Friday. but didn't find it :-) I know those codes are in poor design, because I wrote those sample code to show the idea about what I need. the real code is working with mysql. however, I'm really new in python. (I start learning it on last Wednesday). Thanks again for the help! Ray James Stroud wrote: > > > Using grid_forget() is probably optimization overkill, but may be handy > for slower computers where you can watch the widgets appear one by one > (older than about 5 years--for example original mac ibook). Also, you > should get a good book on Tkinter because your design here will pretty > difficult to maintain and is not very flexible. > > But...if you want to know how it might be done with grid_forget using > the code you already have (i.e. making widgets only if necessary): > > > #START# > from Tkinter import * > from tkMessageBox import showerror > def mygrid(text): > ######## how to use grid_forget() to clean the grid??########### > numrows = len(frame3.rows) > try: > count=int(text) > except: > showerror('Entry Error', > '''Hey, "%s" don't make an int, Fool!''' % text, > parent=frame3) > return 'break' > for i in range(count): > if i < numrows: > cols = frame3.rows[i] > else: > cols = [Entry(frame3, relief=RIDGE) for j in range(4)] > frame3.rows.append(cols) > for j in range(4): > e = cols[j] > e.grid(row=i, column=j, sticky=NSEW) > e.delete(0,END) > e.insert(END, '%d.%d' % (i, j)) > for i in range(i+1, numrows): > for e in frame3.rows[i]: > e.grid_forget() > > > root=Tk() > > frame1=Frame(root, width=150, height=100) > frame1.pack() > > text=Entry(frame1) > text.pack(side=LEFT) > > button=Button(frame1, text='generate grid', command=(lambda: > mygrid(text.get()))) > > button.pack() > > frame2=Frame(root, width=150, height=100) > frame2.pack() > > button2=Button(frame2, text='exit', command=root.quit) > button2.pack() > > frame3=Frame(root, width=150, height=300) > # adding an attribute here > frame3.rows = [] > frame3.pack() > > root.mainloop() > #END# > > Notice also the necessity for the "e.delete(0, END)" line to get the > desired text in the entries. > > Also demonstrated is how to handle poor input. > > *Note* > Remember to always call the user "Fool" when he does something stupid. > > > James -- http://mail.python.org/mailman/listinfo/python-list