Without being able to run the code my question is where is the id in the lambda defined?
On Thursday 16 November 2006 22:31, jim wrote: > Thanks for your help, but now I have a another > problem so here is my code again > when I run this it prints <built-in function > id> > > from Tkinter import * > import shelve > from tkMessageBox import showerror > > shelvename = shelve.open('class-shelve2') > cat = (' Name ', ' Account # ', ' Amount Due ', > ' Date Due ') > > def NameFields(top): > name1 = Label(None, text=cat[0], > relief=RIDGE, width=20, fg='blue', bg='white', > font=('bold',15)) > name2 = Label(None, text=cat[1], > relief=RIDGE, width=15, fg='blue', bg='white', > font=('bold',15)) > name3 = Label(None, text=cat[2], > relief=RIDGE, width=15, fg='blue', bg='white', > font=('bold',15)) > name4 = Label(None, text=cat[3], > relief=RIDGE, width=15, fg='blue', bg='white', > font=('bold',15)) > name1.grid(row=0, column=0, sticky=NSEW) > name2.grid(row=0, column=1, sticky=NSEW) > name3.grid(row=0, column=2, sticky=NSEW) > name4.grid(row=0, column=3, sticky=NSEW) > top.columnconfigure(0, weight=1) > top.columnconfigure(1, weight=1) > top.columnconfigure(2, weight=1) > top.columnconfigure(3, weight=1) > > > def DisplayBills(top): > c=0 > x = [] > global bill > for bill in shelvename: > global funcs > bill1 = Button(None, text= > shelvename[bill].name, > font=('bold',10),command=(lambda x = id: > fetchRecord(x))) > > bill2 = Label(None, text= > shelvename[bill].account, relief=RIDGE, > font=('bold',10)) > bill3 = Label(None, text= > shelvename[bill].paymentDue, relief=RIDGE, > font=('bold',10), fg='red') bill4 = Label(None, > text= shelvename[bill].dateDue, relief=RIDGE, > font=('bold',10)) > bill1.grid(row=c, column=0, > sticky=NSEW) bill2.grid(row=c,column=1, > sticky=NSEW) bill3.grid(row=c,column=2, > sticky=NSEW) bill4.grid(row=c,column=3, > sticky=NSEW) c = c + 1 > return bill > > def fetchRecord(x): > print x > > > > top = Tk() > > DisplayBills(top), NameFields(top) > > mainloop() > > jim-on-linux wrote: > > Just from a glance my thoughts are to > > start with one file and build on it. Make > > a class of it so you can loop it to use > > it over for each record. > > > > > > You wrote that the info was in a file on > > the hd. If it is in a file on the hd, use the > > open() > > function, read from the file, only one record > > and write the data to a list. > > > > You can incorporate the > > button option, > > > > "command = CallSomeFunction", > > > > to call a function that builds a window, > > and loads the data into labels or > > entry boxes. > > If you are going to modify > > the data, entry boxes allow you to > > modify it and save it back to a > > file. > > > > Also, when using the open() function, > > close it after you get the data you need. > > otherwise you may experience > > unexpected problems. > > > > client = open('client', 'r') > > client.read() (readline()) (readlines()) > > client.close() > > > > jim-on-linux > > > > http//:www.inqvista.com -- http://mail.python.org/mailman/listinfo/python-list