Great, thanks for that!

Iain

Michael O'Donnell wrote:
Hi Madhu,

This is not in fact a Tkinter problem.

Try the following simplification of your code:

lbl = [[0]*2]*2
for i in range(2):
    for j in range(2):
        lbl[i][j] = str(i)+str(j)
        print ">", i, j, lbl[i][j], lbl
print lbl

------------------

The print statement within the loops shows that
every time you change the first row of the "array",
the other row changes as well.

Try substituting the first line for:

lbl=[[0,0], [0,0]]


Then no problem, the code works as expected.

So, I cannot explain why, but your way fo initialising the
'array' (in fact, a list of lists), seems to make a list of
lists where the lists are in fact the same list.
(I have never used '*' with lists, this may be the
problem.

Try instead an intialisation like:

x=[[0 for i in range(2)] for j in range(3)]

Mick





On Tue, Mar 17, 2009 at 8:44 PM, Madhu Subramaniam
<madhu.subraman...@gmail.com> wrote:
Iain,

I made a small test program (Fairly new in Tkinter), i have not found the
solution but i came across something, maybe somebody can throw more light on
this ?

Test Code (Active Python IDE 2.6 , Windows XP, Tkinter 8.4)

import sys
import pdb
from Tkinter import *
headers='ll'
machines= 'zt'
lbl = [[0]*len(headers)]*len(machines)
flag=0
root = Tk()
for i in range(len(machines)):
   for j in range(len(headers)):
    lbl[i][j] = Label(root, text= str(i)+str(j), bg = 'red')
    lbl[i][j].grid(row=i, column=j, padx=10, pady =5)
print lbl # something that was noticed
#print lbl[0][1]
lbl[0][0].config(text= 'row=0, column=0') # changes the text in lbl [1] [0]
lbl[0][1].config(text= 'row=0, column=1') # changes the text in lbl [1] [0]
lbl[1][0].config(text= 'row=1, column=0')# overwrites the text in lbl [1]
[0]
lbl[1][1].config(text= 'row=1, column=1') # overwrites the text in lbl [1]
[0]
root.mainloop()

OUTPUT
[[<Tkinter.Label instance at 0x012B3B70>, <Tkinter.Label instance at
0x012B3AA8>], [<Tkinter.Label instance at 0x012B3B70>, <Tkinter.Label
instance at 0x012B3AA8>]]
The instances generated in row wise are the same, but within a row they are
different...
something more can be learnt from that?? hmm, i got to leave now.

Thanks
Madhu

On Tue, Mar 17, 2009 at 9:55 AM, Michael O'Donnell <michael.odonn...@uam.es>
wrote:
Iain,

 You code is incomplete, the place where you create the Label widgets
is not included. We need that to see the problem.

Check the grid operation on each Label, in particular the row parameter.

Also, do a print as each Label is gridded, to see if they all are
actually created.

Mick

On Mon, Mar 16, 2009 at 10:50 PM, Iain Day
<i...@day-online.org.uk.invalid> wrote:
Hi,

I've written a short program which is supposed to populate a table
constructed from tk.Label widgets. It does this by looping over the
rows.
Unfortunately, it only seems to populate the final row. What am I doing
wrong?

The code is:

def updatedata():
   updatetime.delete(0, tk.END)
   for i in range(len(machines)):
       print machines[i]
       status = sshshowstat(machines[i])

       for j in range(len(status)):
           param, value = status[j].split(': ')

           for k in range(len(variables)):
               if re.match(variables[k], param) is None:
                   continue
               else:
#                    print i, value
                   if value in ('Acquiring', 'Regulated'):
                       systemdata[i][k].config(text=value,
foreground='green')
                   elif value in ('Not Reg.'):
                       systemdata[i][k].config(text=value,
foreground='red')
                   else:
                       systemdata[i][k].config(text=value)


tk.Button(root, text="Update Table Data",
command=updatedata).grid(row=len(machines)+1, column=len(variables),
sticky=tk.S)



Thanks,

Iain

_______________________________________________
Tkinter-discuss mailing list
Tkinter-discuss@python.org
http://mail.python.org/mailman/listinfo/tkinter-discuss

_______________________________________________
Tkinter-discuss mailing list
Tkinter-discuss@python.org
http://mail.python.org/mailman/listinfo/tkinter-discuss


_______________________________________________
Tkinter-discuss mailing list
Tkinter-discuss@python.org
http://mail.python.org/mailman/listinfo/tkinter-discuss

Reply via email to