#!/usr/bin/env python
# coding:UTF-8
"""
@version: python3.x
@author:曹新健
@contact: [email protected]
@software: PyCharm
@file: peoplegui.py
@time: 2018/9/29 20:56
"""
import shelve
from tkinter import *
from tkinter.messagebox import showerror
class Person():
def __init__(self,name,age,pay=100,job="无业游民"):
self.name = name
self.age = age
self.pay = pay
self.job = job
shelveFile = 'person-shelve'
fields = ('name','age','pay','job')
def makeWidget():
global entries
entries = {}
wd = Tk()
wd.title("People Shelve")
wd.iconbitmap('bank.ico') #程序目录下需要有bank.ico图片
fr = Frame(wd)
fr.pack()
for (id,field) in enumerate(('key',) + fields):
lb = Label(fr,text=field)
en = Entry(fr)
lb.grid(row=id,column=0)
en.grid(row=id,column=1)
entries[field] = en
Button(wd,text="查询",command=fetchRecord).pack(side=LEFT)
Button(wd, text="更新", command=updateRecord).pack(side=LEFT)
Button(wd, text="退出", command=wd.quit).pack(side=RIGHT)
return wd
def fetchRecord():
key = entries['key'].get()
try:
record = db[key]
except:
showerror(title="错误",message="输入的键值不存在")
else:
for field in fields:
entries[field].delete(0,END)
entries[field].insert(0,repr(getattr(record,field)))
def updateRecord():
key = entries['key'].get()
try:
record = db[key]
except:
#from person import Person
record = Person('?','?')
for field in fields:
setattr(record,field,eval(entries[field].get()))
db[key] = record
if __name__ == "__main__":
with shelve.open(shelveFile) as db:
window = makeWidget()
window.mainloop()