TK-grid problem, please help

Ray ruiligc at earthlink.net
Tue Apr 24 07:16:23 EDT 2007


Hi Anton,

Thanks again. This is what I need!
my problem already solved.

Ray

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.



More information about the Python-list mailing list