Press button to load data

jim-on-linux inq1ltd at verizon.net
Fri Nov 17 00:25:39 EST 2006


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



More information about the Python-list mailing list