diff --git a/add_info.py b/add_info.py new file mode 100644 index 0000000..0395f10 --- /dev/null +++ b/add_info.py @@ -0,0 +1,109 @@ +import tkinter as tk +import tkinter.messagebox as msgbox +import sqlite3 +import datetime + +def addquote(string): + """为any加上引号""" + return "\'" + str(string) + "\'" + +window = tk.Tk() +window.resizable(0, 0) +window.title("添加车辆信息") +# 窗口居中 +ww, wh = 300, 300 +sw, sh = window.winfo_screenwidth(), window.winfo_screenheight() +x, y = (sw - ww) / 2, (sh - wh) / 2 +window.geometry("%dx%d+%d+%d" % (ww, wh, x, y)) + +l_Id = tk.Label(window, text="车牌号:") +l_Name = tk.Label(window, text="姓名:") +l_Color = tk.Label(window, text="颜色:") +l_Addr = tk.Label(window, text="住址:") +l_Phone = tk.Label(window, text="电话:") + +# 间隔30 +l_Id.place(x=10, y=20) +l_Name.place(x=10, y=50) +l_Color.place(x=10, y=80) +l_Addr.place(x=10, y=110) +l_Phone.place(x=10, y=140) + +# 录入框/获得单行文本框的信息 +def checkdata(): + if e_Phone.get() is None: #e_Id + return False + try: + int(e_Phone.get()) + return True + except ValueError: + msgbox.showwarning(message="非法输入") + return False + +# 检查字符串是否由数字组成 +def check_value(string): + try: + int(string) + return True + except ValueError: + return False + +var_id = tk.StringVar() +var_name = tk.StringVar() +var_color = tk.StringVar() +var_addr = tk.StringVar() +var_phone = tk.StringVar() + +e_Id = tk.Entry(window, width=30, textvariable=var_id) +e_Name = tk.Entry(window, width=30, textvariable=var_name) +e_Color = tk.Entry(window, width=30, textvariable=var_color) +e_Addr = tk.Entry(window, width=30, textvariable=var_addr) +e_Phone = tk.Entry(window, width=30, textvariable=var_phone,validate="focusout", invalidcommand=checkdata) + +# 间隔30 +e_Id.place(x=60, y=20) +e_Name.place(x=60, y=50) +e_Color.place(x=60, y=80) +e_Addr.place(x=60, y=110) +e_Phone.place(x=60, y=140) + +# 按钮 +def func_save(): + # 检查车牌号是否为空,为空则报错 通过entry属性实现 + # todo + if e_Id.get() == "": + msgbox.showwarning(message="车牌号为空") + else: + ids, name, color, addr, phone = var_id.get(), var_name.get(), var_color.get(), var_addr.get(), var_phone.get() # 获得输入的文本内容 + con = sqlite3.connect("./car_info.db") # 连接数据库 + cur = con.cursor() # 创建游标对象 + + # 获取当前时间 + current_time = datetime.datetime.now() + current_time_str = current_time.strftime("%Y-%m-%d %H:%M:%S") + + # 尝试写入,如果遇到重复则报错,确认是否需要修改 + try: + cur.execute('insert into car values(?, ?, ?, ?, ?, ?)', (ids, name, color, addr, phone, current_time_str)) + msgbox.showinfo(message="添加成功!") + window.quit() + except sqlite3.IntegrityError: + msgbox.showerror("⚠", "车牌号重复") + res = msgbox.askyesno("⚠", "是否需要覆盖") + if res is True: + res2 = msgbox.askokcancel("⚠", "一旦确认则无法撤销,请确认") + if res2 is True: + cur.execute("update car set name=?, color=?, addr=?, phone=?, stay_hours=? where id=?", (name, color, addr, phone, current_time_str, ids)) + # else: + # window.quit() + + con.commit() + cur.close() + con.close() + +btn_save = tk.Button(window, text="保存", width=10, command=func_save) +btn_exit = tk.Button(window, text="退出", width=10, command=window.quit) +btn_save.place(x=110, y=220) +btn_exit.place(x=200, y=220) + +window.mainloop() \ No newline at end of file