Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from tkinter import *
- from tkinter.filedialog import askopenfilename
- import shelve
- root = Tk()
- shelvename = askopenfilename().split('.')[0]
- root.title(shelvename.split('/')[-1])
- db = shelve.open(shelvename)
- rec = 0
- dbkeys = list(db.keys())
- record = db[dbkeys[rec]]
- fields = tuple(record.__dict__.keys())
- form = Frame(root)
- form.pack()
- global entries
- entries ={}
- lab = Label(form, text="key")
- ent = Entry(form)
- lab.grid(row=0, sticky = E)
- ent.grid(row=0, column=1)
- entries['key'] = ent
- for (ix,label) in enumerate(fields):
- lab = Label(form, text=label)
- ent = Entry(form)
- lab.grid(row=ix+1, sticky = E)
- ent.grid(row=ix+1, column=1)
- entries[label] = ent
- def ShowRec(char = ''):
- global rec
- dbkeys = list(db.keys())
- if char =='+':
- if rec<len(dbkeys)-1:
- rec+=1
- elif char == '-':
- if rec>0:
- rec-=1
- record = db[dbkeys[rec]]
- fields = record.__dict__.keys()
- entries['key'].delete(0, END)
- entries['key'].insert(0,str(dbkeys[rec]))
- for label in fields:
- entries[label].delete(0, END)
- entries[label].insert(0,str(getattr(record, label)))
- def updateRecord():
- key = entries['key'].get()
- if key in db:
- record = db[key]
- else:
- from person import Person
- record = Person(name='?', job='?')
- for field in fields:
- setattr(record, field, entries[field].get())
- db[key] = record
- def deleteRecord():
- global rec
- key = entries['key'].get()
- del db[key]
- rec = 0
- ShowRec()
- def clearRec():
- record = db[dbkeys[rec]]
- fields = record.__dict__.keys()
- entries['key'].delete(0, END)
- for label in fields:
- entries[label].delete(0, END)
- ShowRec()
- root.mainloop()
- db.close()
- Button(root, text='<<', command = (lambda: ShowRec('-'))).pack(side=LEFT)
- Button(root, text='>>', command = (lambda: ShowRec('+'))).pack(side=RIGHT)
- Button(root, text='Update', command = (lambda: updateRecord())).pack(side=LEFT)
- Button(root, text='Delete', command = (lambda: deleteRecord())).pack(side=RIGHT)
- Button(root, text='Clear', command = (lambda: clearRec())).pack(fill=X)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement