rows = []
for i in range(numrow):
cols = []
for j in range(numcol):
ent = Entry(relief=RIDGE)
ent.grid(row=i, column=j, sticky=NSEW)
ent.insert(END, '%d.%d' % (i, j))
cols.append(ent)
rows.append(cols)
sums = []
for i in range(numcol):
lab = Label(text='?', relief=SUNKEN)
lab.grid(row=numrow, column=i, sticky=NSEW)
sums.append(lab)
def onPrint():
for row in rows:
for col in row:
print(col.get(), end=' ')
print()
print()
def onSum():
tots = [0] * numcol
for i in range(numcol):
for j in range(numrow):
tots[i] += eval(rows[j][i].get()) # sum column
for i in range(numcol):
sums[i].config(text=str(tots[i])) # display in GUI
def onClear():
for row in rows:
for col in row:
col.delete('0', END)
col.insert(END, '0.0')
for sum in sums:
sum.config(text='?')
import sys
Button(text='Sum', command=onSum).grid(row=numrow+1, column=0)
Button(text='Print', command=onPrint).grid(row=numrow+1, column=1)
Figure 9-35. A larger grid of input fields
576 | Chapter 9: A tkinter Tour, Part 2