You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

109 lines
3.3 KiB

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()