Hi, Thanks for the help!
Anton Vredegoor wrote: > Ray wrote: > >> hi, I have a question about how to use .grid_forget (in python/TK) >> >> I need to work on grid repeatly. everytime when a button is pressed, >> the rows of grid is different. such like, first time, it generate 10 >> rows of data. >> 2nd time, it maybe only 5 rows. so I need a way to RESET the grid data >> every time. how can I do it? by grid_forger()?, then would anyone can >> help on >> how to use grid_forget() >> the sample code as following: > > I'm not sure if it solves your problem but this modification of your > code at least *looks* like it works better. The entries are completely > destroyed so that the next time you call the function they can be > recreated. > > The trick I am using is to use a list in the arguments of the function > but that is a bit of a hack, the list 'remembers' its state from the > last time the function was called, I think one should use classes for > bookkeeping such things instead. > > from Tkinter import * > > def mygrid(text,M = []): > ######## how to use grid_forget() to clean the grid??########### > while M: > x = M.pop() > x.destroy() > rows = [] > count=int(text) > for i in range(count): > cols = [] > for j in range(4): > e = Entry(frame3, relief=RIDGE) > M.append(e) > e.grid(row=i, column=j, sticky=NSEW) > e.insert(END, '%d.%d' % (i, j)) > cols.append(e) > rows.append(cols) > > > 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) > frame3.pack() > > root.mainloop() > > A. -- http://mail.python.org/mailman/listinfo/python-list