diff --git a/main.py b/main.py new file mode 100644 index 0000000..b40a451 --- /dev/null +++ b/main.py @@ -0,0 +1,288 @@ +import tkinter +from tkinter import* +from tkinter import ttk +import tkinter as tk +import pymysql +from tkinter import Label +import mysql.connector +import turtle +from turtle import Screen, Turtle +from turtle import Canvas, RawTurtle +list1 = [] +list2 =[] +canvas = None +db = pymysql.connect(host='localhost', user='root', password='123456', database='test', charset='utf8') +# 创建字典类型的游标对象 +cursor = db.cursor() +#此处先留,为避免后续可能对use_name数据段的游标造成影响 +def update_data(): + id_care = entry_id_care.get() + name = entry_name.get() + pack_id = entry_pack_id.get() + wuliu_info = entry_wuliu_info.get() + wuliu_info2 = entry_wuliu_info2.get() + wuliu_cant = entry_wuliu_cant.get() + + sql = "UPDATE use_wuliu SET name = %s, pack_id = %s, wuliu_info = %s, wuliu_info2 = %s, wuliu_cant = %s WHERE id_care = %s" + values = (name, pack_id, wuliu_info, wuliu_info2, wuliu_cant, id_care) + + cursor.execute(sql, values) + db.commit() + print("数据更新成功!") + + entry_id_care.delete(0, tk.END) + entry_name.delete(0, tk.END) + entry_pack_id.delete(0, tk.END) + entry_wuliu_info.delete(0, tk.END) + entry_wuliu_info2.delete(0, tk.END) + entry_wuliu_cant.delete(0, tk.END) +def delete(): + id_care = entry_id_care.get() + + sql = "DELETE FROM use_wuliu WHERE id_care = %s" + value = (id_care,) + + cursor.execute(sql, value) + db.commit() + print("数据删除成功!") + + entry_id_care.delete(0, tk.END) +def add(): + id_care = entry_id_care.get() + name = entry_name.get() + pack_id = entry_pack_id.get() + wuliu_info = entry_wuliu_info.get() + wuliu_info2 = entry_wuliu_info2.get() + wuliu_cant = entry_wuliu_cant.get() + + sql = "INSERT INTO use_wuliu (id_care, name, pack_id, wuliu_info, wuliu_info2, wuliu_cant) VALUES (%s, %s, %s, %s, %s, %s)" + values = (id_care, name, pack_id, wuliu_info, wuliu_info2, wuliu_cant) + cursor.execute(sql, values) + db.commit() + print("数据插入成功!") + entry_id_care.delete(0, tk.END) + entry_name.delete(0, tk.END) + entry_pack_id.delete(0, tk.END) + entry_wuliu_info.delete(0, tk.END) + entry_wuliu_info2.delete(0, tk.END) + entry_wuliu_cant.delete(0, tk.END) +def draw_line(): + text_drawr=text_drawrenew.get() + turtle.clear() + try: + cursor.execute("SELECT wuliu_info FROM use_wuliu WHERE id_care = %s", (text_drawr,)) + except Exception as e: + print("发生了错误:", e) + row = cursor.fetchone() + if row is not None: + text_data = row[0] + else: + text_data = "Default Text" + cursor.execute("SELECT wuliu_info2 FROM use_wuliu WHERE id_care = %s", (text_drawr,)) + row = cursor.fetchone() + if row is not None: + text_data1 = row[0] + else: + text_data1 = "Default Text" + + t = RawTurtle(canvas) + t.speed(0) + # 画第一个点 + t.penup() + t.goto(-50, 0) + t.shape("arrow") + t.stamp() + canvas.create_text(-40, 20, text=text_data, font=("Arial", 12)) + + # 画第二个点 + t.goto(80, 0) + t.stamp() + canvas.create_text(70, 20, text=text_data1, font=("Arial", 12)) + + # 画直线连接两点 + t.goto(-50, 0) + t.pendown() + t.goto(80, 0) + t.hideturtle() +class Logintabe: + def __init__(self): + self.window = tk.Tk() + self.window.title('物流管理系统') + self.window.geometry('300x300') + self.window.configure() + self.label_username = Label(self.window, text="账户:") + self.label_username.pack() + self.entry_username = Entry(self.window, width=20) + self.entry_username.pack() + self.label_password = Label(self.window, text="密码:") + self.label_password.pack() + self.entry_password = Entry(self.window, width=20, show="*") + self.entry_password.pack() + self.label_message = Label(self.window, text="") + self.label_message.pack() + self.btn_login = Button(self.window, text="登录", width=5, command=self.public_login) + self.btn_login.pack() + self.select = ttk.Combobox(self.window, width=8, textvariable=tk.StringVar(), state="readonly") + self.lis = ["管理人员", "客户"] + self.select['values'] = self.lis + self.select.pack() + + def public_loginfarm(self): + self.window.mainloop() + + def public_login(self): + input_username = self.entry_username.get() + input_password = self.entry_password.get() + cursor.execute("SELECT name, password FROM user_test WHERE name=%s", (input_username,)) + result = cursor.fetchone() + if result: + list1 = result[0] + list2 = result[1] + + if input_username == list1 and input_password == list2: + self.label_message.config(text="登录成功", bg="green") + self.window.destroy() + + + else: + self.label_message.config(text="登录失败", bg="red") + login_tab.public_loginfarm() + +login_tab = Logintabe() +login_tab.public_loginfarm() +#登录页面功能实现 +root = tkinter.Tk() +root.title("物流管理系统功能内容展示") +root.geometry('600x600') +note = ttk.Notebook() +note.place(relx=0.01, rely=0.08, relwidth=0.98, relheight=0.9) +frame3 = tkinter.Frame(root) +note.add(frame3, text='查看更新') +label_arenew = tkinter.Label(frame3, text="查看:") +label_arenew.pack() +text_arenew = tkinter.Entry(frame3) +text_arenew.pack() + +id_text = tk.Text(frame3, height=10, width=10) +id_text.pack(side=tk.LEFT) +name_text = tk.Text(frame3, height=10, width=20) +name_text.pack(side=tk.LEFT) +pack_id_text = tk.Text(frame3, height=10, width=10) +pack_id_text.pack(side=tk.LEFT) +wuliu_info_text = tk.Text(frame3, height=10, width=20) +wuliu_info_text.pack(side=tk.LEFT) +wuliu_info2_text = tk.Text(frame3, height=10, width=20) +wuliu_info2_text.pack(side=tk.LEFT) +wuliu_cant_text = tk.Text(frame3, height=10, width=20) +wuliu_cant_text.pack(side=tk.LEFT) + +serch_id_text = tk.Text(frame3, height=10, width=10) +serch_id_text.pack(side=tk.LEFT) +serch_name_text = tk.Text(frame3, height=10, width=20) +serch_name_text.pack(side=tk.LEFT) +serch_pack_id_text = tk.Text(frame3, height=10, width=10) +serch_pack_id_text.pack(side=tk.LEFT) +serch_wuliu_info_text = tk.Text(frame3, height=10, width=20) +serch_wuliu_info_text.pack(side=tk.LEFT) +serch_wuliu_info2_text = tk.Text(frame3, height=10, width=20) +serch_wuliu_info2_text.pack(side=tk.LEFT) +serch_wuliu_cant_text = tk.Text(frame3, height=10, width=20) +serch_wuliu_cant_text.pack(side=tk.LEFT) + +def refresh_records(): + # 清空所有文本框 + for text_widget in text_widgets: + text_widget.delete("1.0", tk.END) + + # 查询数据库中的信息 + + search_query = text_arenew.get() + cursor.execute("SELECT * FROM use_wuliu WHERE id_care=%s", (search_query,)) + rows = cursor.fetchall() + cursor.execute("SELECT * FROM use_wuliu") + all_rows = cursor.fetchall() + + # 将查询结果展示在各自的文本框中 + for row in all_rows: + id_text.insert(tk.END, f"ID: {row[0]}\n") + name_text.insert(tk.END, f"Name: {row[1]}\n") + pack_id_text.insert(tk.END, f"Pack ID: {row[2]}\n") + wuliu_info_text.insert(tk.END, f"起始地: {row[3]}\n") + wuliu_info2_text.insert(tk.END, f"终点: {row[4]}\n") + wuliu_cant_text.insert(tk.END, f"状态: {row[5]}\n") + for row in rows: + serch_id_text.insert(tk.END, f"ID: {row[0]}\n") + serch_name_text.insert(tk.END, f"Name: {row[1]}\n") + serch_pack_id_text.insert(tk.END, f"Pack ID: {row[2]}\n") + serch_wuliu_info_text.insert(tk.END, f"起始地: {row[3]}\n") + serch_wuliu_info2_text.insert(tk.END, f"终点: {row[4]}\n") + serch_wuliu_cant_text.insert(tk.END, f"状态: {row[5]}\n") + + mark_red(serch_id_text, f"ID: {row[0]}") + mark_red(serch_name_text, f"Name: {row[1]}") + mark_red(serch_pack_id_text, f"Pack ID: {row[2]}") + mark_red(serch_wuliu_info_text, f"起始地: {row[3]}") + mark_red(serch_wuliu_info2_text, f"终点: {row[4]}") + mark_red(serch_wuliu_cant_text, f"状态: {row[5]}") +def mark_red(text_widget, pattern): + start = "1.0" + while True: + pos = text_widget.search(pattern, start, tk.END) + if not pos: + break + end = f"{pos} + {len(pattern)} chars" + text_widget.tag_add("red", pos, end) + start = end + text_widget.tag_config("red", foreground="red") +text_widgets = [id_text, name_text, pack_id_text, wuliu_info_text, wuliu_info2_text, wuliu_cant_text] + +refresh_button = tk.Button(root, text="更新", command=refresh_records) +refresh_button.pack() +frame1 = tkinter.Frame(root) +note.add(frame1, text='功能页面') +tk.Label(frame1, text="TD:").pack() +entry_id_care = tk.Entry(frame1, width=30) +entry_id_care.pack() + +tk.Label(frame1, text="姓名:").pack() +entry_name = tk.Entry(frame1, width=30) +entry_name.pack() + +tk.Label(frame1, text="包裹ID:").pack() +entry_pack_id = tk.Entry(frame1, width=30) +entry_pack_id.pack() + +tk.Label(frame1, text="出发点:").pack() +entry_wuliu_info = tk.Entry(frame1, width=30) +entry_wuliu_info.pack() +tk.Label(frame1, text="终点:").pack() +entry_wuliu_info2 = tk.Entry(frame1, width=30) +entry_wuliu_info2.pack() +tk.Label(frame1, text="状态:").pack() +entry_wuliu_cant = tk.Entry(frame1, width=30) +entry_wuliu_cant.pack() + +button1 = tkinter.Button(frame1, text='更新', width=5, command=update_data) +button1.pack() +buttonadd = tkinter.Button(frame1, text='增加', width=5, command=add) +buttonadd.pack() +buttonadd = tkinter.Button(frame1, text='删除', width=5, command=delete) +buttonadd.pack() +frame2 = tkinter.Frame(root, width=400, height=400) +note.add(frame2, text='物流信息页') +canvas = Canvas(frame2, width=200, height=200) +canvas.pack() + +label_drawrenew = tkinter.Label(frame2, text="查看:") +label_drawrenew.pack() +text_drawrenew = tkinter.Entry(frame2) +text_drawrenew.pack() +button2 = tkinter.Button(frame2, text="查询", command=draw_line) # 将按钮存入框架2 +button2.pack() + +turtle = turtle.TurtleScreen(canvas) +turtle.bgcolor("white") +root.mainloop() + + +