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.
507 lines
22 KiB
507 lines
22 KiB
import mysql.connector
|
|
from datetime import datetime
|
|
import tkinter as tk
|
|
from tkinter import messagebox, simpledialog
|
|
import random
|
|
|
|
# 数据库配置
|
|
db_config = {
|
|
'host': 'localhost',
|
|
'user': 'root',
|
|
'password': '123456',
|
|
'database': 'mydata'
|
|
}
|
|
|
|
# 连接到数据库
|
|
conn = mysql.connector.connect(**db_config)
|
|
cursor = conn.cursor()
|
|
|
|
def select_table():
|
|
cursor.execute("SELECT * FROM tables WHERE Cz_zt = '空闲'")
|
|
available_tables = cursor.fetchall()
|
|
if not available_tables:
|
|
messagebox.showinfo("提示", "没有空桌子可用。")
|
|
return None
|
|
|
|
table_selection = tk.Toplevel()
|
|
table_selection.title("选择桌子")
|
|
tk.Label(table_selection, text="欢迎光临!请选择一个空闲的桌子:", font=("Arial", 14)).pack(pady=10)
|
|
|
|
# 创建表格显示桌子信息
|
|
table_frame = tk.Frame(table_selection)
|
|
table_frame.pack(pady=10)
|
|
|
|
for table in available_tables:
|
|
table_button = tk.Button(
|
|
table_frame,
|
|
text=f"桌号: {table[1]}\n位置: {random.choice(['靠窗', '中央', '角落'])}",
|
|
width=20,
|
|
height=2,
|
|
bg="lightblue",
|
|
command=lambda t=table: proceed_to_customer_info(t[1], t[0], table_selection)
|
|
)
|
|
table_button.pack(pady=5, padx=10, side="top")
|
|
|
|
def proceed_to_customer_info(cz_number, cz_id, table_selection):
|
|
cursor.execute("UPDATE tables SET Cz_zt = '占用' WHERE Cz_id = %s", (cz_id,))
|
|
conn.commit()
|
|
table_selection.destroy()
|
|
main_window.cz_id = cz_id
|
|
messagebox.showinfo("桌子已选择", f"您已选择桌子编号: {cz_number}。")
|
|
add_customer() # 自动弹出填写顾客信息的窗口
|
|
|
|
def add_customer():
|
|
customer_window = tk.Toplevel()
|
|
customer_window.title("填写顾客信息")
|
|
|
|
tk.Label(customer_window, text="请输入您的信息:", font=("Arial", 14)).pack(pady=10)
|
|
|
|
tk.Label(customer_window, text="姓名:").pack()
|
|
name_entry = tk.Entry(customer_window)
|
|
name_entry.pack()
|
|
|
|
tk.Label(customer_window, text="性别:").pack()
|
|
sex_entry = tk.Entry(customer_window)
|
|
sex_entry.pack()
|
|
|
|
tk.Label(customer_window, text="电话:").pack()
|
|
phone_entry = tk.Entry(customer_window)
|
|
phone_entry.pack()
|
|
|
|
def confirm_customer():
|
|
t_name = name_entry.get()
|
|
t_rsex = sex_entry.get()
|
|
t_phone = phone_entry.get()
|
|
if t_name and t_rsex and t_phone:
|
|
cursor.execute("INSERT INTO customers (T_name, T_rsex, T_phone) VALUES (%s, %s, %s)", (t_name, t_rsex, t_phone))
|
|
conn.commit()
|
|
customer_window.destroy()
|
|
main_window.t_id = cursor.lastrowid
|
|
place_order(main_window.t_id, main_window.cz_id) # 跳转到点餐流程
|
|
else:
|
|
messagebox.showwarning("警告", "请完整填写所有信息!")
|
|
|
|
tk.Button(customer_window, text="确认", command=confirm_customer).pack(pady=10)
|
|
|
|
def place_order(t_id, cz_id):
|
|
cursor.execute("SELECT * FROM menu_items")
|
|
menu_items = cursor.fetchall()
|
|
order_window = tk.Toplevel()
|
|
order_window.title("点餐")
|
|
tk.Label(order_window, text="菜单:", font=("Arial", 14)).pack(pady=10)
|
|
selected_items = []
|
|
|
|
item_vars = []
|
|
for item in menu_items:
|
|
item_var = tk.BooleanVar()
|
|
tk.Checkbutton(order_window, text=f"{item[1]} - {item[3]}元", variable=item_var).pack(anchor="w")
|
|
item_vars.append((item_var, item[0]))
|
|
|
|
def confirm_order():
|
|
for var, item_id in item_vars:
|
|
if var.get():
|
|
selected_items.append(item_id)
|
|
if selected_items:
|
|
# 自动分配空闲服务员
|
|
cursor.execute("SELECT W_id, W_name FROM workers WHERE W_stat = 0 LIMIT 1")
|
|
worker = cursor.fetchone()
|
|
if worker:
|
|
w_id, w_name = worker
|
|
# 更新服务员状态为忙碌
|
|
cursor.execute("UPDATE workers SET W_stat = 1 WHERE W_id = %s", (w_id,))
|
|
conn.commit()
|
|
|
|
time = datetime.now()
|
|
items_str = ','.join(selected_items)
|
|
cursor.execute(
|
|
"INSERT INTO orders (T_id, time, Cz_id, W_id, items) VALUES (%s, %s, %s, %s, %s)",
|
|
(t_id, time, cz_id, w_id, items_str)
|
|
)
|
|
order_id = cursor.lastrowid
|
|
conn.commit()
|
|
|
|
# 显示分配的服务员信息
|
|
messagebox.showinfo("订单成功", f"您的服务员是:{w_name} (ID: {w_id})")
|
|
order_window.destroy()
|
|
main_window.order_id = order_id
|
|
main_window.selected_items = selected_items
|
|
generate_bill(main_window.order_id, main_window.selected_items) # 自动生成账单
|
|
else:
|
|
messagebox.showwarning("提示", "当前没有空闲的服务员,请稍候再试!")
|
|
else:
|
|
messagebox.showwarning("警告", "请选择至少一个菜品。")
|
|
|
|
tk.Button(order_window, text="确认点餐", command=confirm_order).pack()
|
|
order_window.mainloop()
|
|
|
|
def generate_bill(order_id, selected_items):
|
|
total_price = 0
|
|
total_price_after_discount = 0
|
|
for m_id in selected_items:
|
|
cursor.execute("SELECT M_price FROM menu_items WHERE M_id = %s", (m_id,))
|
|
price = cursor.fetchone()[0]
|
|
cursor.execute("SELECT discount FROM discount_rules WHERE M_id = %s", (m_id,))
|
|
discount = cursor.fetchone()
|
|
if discount and discount[0] is not None:
|
|
discounted_price = price * discount[0]
|
|
else:
|
|
discounted_price = price
|
|
total_price += price
|
|
total_price_after_discount += discounted_price
|
|
|
|
s_price = total_price
|
|
s_priceafter = total_price_after_discount
|
|
time = datetime.now()
|
|
cursor.execute("INSERT INTO bills (O_id, S_price, S_priceafter, time) VALUES (%s, %s, %s, %s)",
|
|
(order_id, s_price, s_priceafter, time))
|
|
conn.commit()
|
|
|
|
bill_window = tk.Toplevel()
|
|
bill_window.title("账单")
|
|
tk.Label(bill_window, text=f"总价: {s_price}元", font=("Arial", 14)).pack(pady=10)
|
|
tk.Label(bill_window, text=f"折后价: {s_priceafter}元", font=("Arial", 14)).pack(pady=10)
|
|
|
|
def confirm_bill():
|
|
cursor.execute("UPDATE tables SET Cz_zt = '空闲' WHERE Cz_id = (SELECT Cz_id FROM orders WHERE O_id = %s)", (order_id,))
|
|
conn.commit()
|
|
messagebox.showinfo("提示", "账单已确认,感谢您的光临,桌子已重置为空闲。")
|
|
bill_window.destroy()
|
|
|
|
tk.Button(bill_window, text="确认账单", command=confirm_bill).pack(pady=10)
|
|
bill_window.mainloop()
|
|
|
|
def show_customers():
|
|
def edit_customer(t_id):
|
|
cursor.execute("SELECT * FROM customers WHERE T_id = %s", (t_id,))
|
|
customer = cursor.fetchone()
|
|
if customer:
|
|
edit_window = tk.Toplevel()
|
|
edit_window.title("编辑顾客信息")
|
|
|
|
tk.Label(edit_window, text="姓名:").pack()
|
|
name_entry = tk.Entry(edit_window)
|
|
name_entry.insert(0, customer[1])
|
|
name_entry.pack()
|
|
|
|
tk.Label(edit_window, text="性别:").pack()
|
|
sex_entry = tk.Entry(edit_window)
|
|
sex_entry.insert(0, customer[2])
|
|
sex_entry.pack()
|
|
|
|
tk.Label(edit_window, text="电话:").pack()
|
|
phone_entry = tk.Entry(edit_window)
|
|
phone_entry.insert(0, customer[3])
|
|
phone_entry.pack()
|
|
|
|
def confirm_edit():
|
|
t_name = name_entry.get()
|
|
t_rsex = sex_entry.get()
|
|
t_phone = phone_entry.get()
|
|
if t_name and t_rsex and t_phone:
|
|
cursor.execute("UPDATE customers SET T_name = %s, T_rsex = %s, T_phone = %s WHERE T_id = %s", (t_name, t_rsex, t_phone, t_id))
|
|
conn.commit()
|
|
edit_window.destroy()
|
|
show_customers() # 刷新顾客信息
|
|
else:
|
|
messagebox.showwarning("警告", "请完整填写所有信息!")
|
|
|
|
tk.Button(edit_window, text="确认编辑", command=confirm_edit).pack(pady=10)
|
|
|
|
def delete_customer(t_id):
|
|
if messagebox.askyesno("确认删除", "确定要删除该顾客信息吗?"):
|
|
# 先删除 orders 表中与该顾客相关的所有记录
|
|
cursor.execute("DELETE FROM orders WHERE T_id = %s", (t_id,))
|
|
conn.commit()
|
|
|
|
# 再删除 customers 表中的记录
|
|
cursor.execute("DELETE FROM customers WHERE T_id = %s", (t_id,))
|
|
conn.commit()
|
|
|
|
show_customers() # 刷新顾客信息
|
|
|
|
cursor.execute("SELECT * FROM customers")
|
|
customers = cursor.fetchall()
|
|
if not customers:
|
|
messagebox.showinfo("提示", "没有顾客信息。")
|
|
return
|
|
|
|
customer_window = tk.Toplevel()
|
|
customer_window.title("顾客信息")
|
|
|
|
for customer in customers:
|
|
frame = tk.Frame(customer_window)
|
|
frame.pack(pady=5, fill=tk.X)
|
|
tk.Label(frame, text=f"ID: {customer[0]}, 姓名: {customer[1]}, 性别: {customer[2]}, 电话: {customer[3]}", width=40).pack(side=tk.LEFT)
|
|
tk.Button(frame, text="编辑", command=lambda c=customer[0]: edit_customer(c), width=10).pack(side=tk.RIGHT, padx=5)
|
|
tk.Button(frame, text="删除", command=lambda c=customer[0]: delete_customer(c), width=10).pack(side=tk.RIGHT, padx=5)
|
|
|
|
def show_workers():
|
|
def edit_worker(w_id):
|
|
cursor.execute("SELECT * FROM workers WHERE W_id = %s", (w_id,))
|
|
worker = cursor.fetchone()
|
|
if worker:
|
|
edit_window = tk.Toplevel()
|
|
edit_window.title("编辑员工信息")
|
|
|
|
tk.Label(edit_window, text="姓名:").pack()
|
|
name_entry = tk.Entry(edit_window)
|
|
name_entry.insert(0, worker[1])
|
|
name_entry.pack()
|
|
|
|
tk.Label(edit_window, text="性别:").pack()
|
|
sex_entry = tk.Entry(edit_window)
|
|
sex_entry.insert(0, worker[2])
|
|
sex_entry.pack()
|
|
|
|
tk.Label(edit_window, text="状态:").pack()
|
|
status_entry = tk.Entry(edit_window)
|
|
status_entry.insert(0, worker[3])
|
|
status_entry.pack()
|
|
|
|
tk.Label(edit_window, text="工资:").pack()
|
|
salary_entry = tk.Entry(edit_window)
|
|
salary_entry.insert(0, worker[4])
|
|
salary_entry.pack()
|
|
|
|
def confirm_edit():
|
|
w_name = name_entry.get()
|
|
w_sex = sex_entry.get()
|
|
w_stat = status_entry.get()
|
|
w_salary = salary_entry.get()
|
|
if w_name and w_sex and w_stat and w_salary:
|
|
cursor.execute("UPDATE workers SET W_name = %s, W_sex = %s, W_stat = %s, W_salary = %s WHERE W_id = %s", (w_name, w_sex, w_stat, w_salary, w_id))
|
|
conn.commit()
|
|
edit_window.destroy()
|
|
show_workers() # 刷新员工信息
|
|
else:
|
|
messagebox.showwarning("警告", "请完整填写所有信息!")
|
|
|
|
tk.Button(edit_window, text="确认编辑", command=confirm_edit).pack(pady=10)
|
|
|
|
def delete_worker(w_id):
|
|
if messagebox.askyesno("确认删除", "确定要删除该员工信息吗?"):
|
|
# 先删除 orders 表中与该员工相关的所有记录
|
|
cursor.execute("DELETE FROM orders WHERE W_id = %s", (w_id,))
|
|
conn.commit()
|
|
|
|
# 再删除 workers 表中的记录
|
|
cursor.execute("DELETE FROM workers WHERE W_id = %s", (w_id,))
|
|
conn.commit()
|
|
|
|
show_workers() # 刷新员工信息
|
|
|
|
cursor.execute("SELECT * FROM workers")
|
|
workers = cursor.fetchall()
|
|
if not workers:
|
|
messagebox.showinfo("提示", "没有员工信息。")
|
|
return
|
|
|
|
worker_window = tk.Toplevel()
|
|
worker_window.title("员工信息")
|
|
|
|
for worker in workers:
|
|
frame = tk.Frame(worker_window)
|
|
frame.pack(pady=5, fill=tk.X)
|
|
tk.Label(frame, text=f"ID: {worker[0]}, 姓名: {worker[1]}, 性别: {worker[2]}, 状态: {worker[3]}, 工资: {worker[4]}", width=50).pack(side=tk.LEFT)
|
|
tk.Button(frame, text="编辑", command=lambda w=worker[0]: edit_worker(w), width=10).pack(side=tk.RIGHT, padx=5)
|
|
tk.Button(frame, text="删除", command=lambda w=worker[0]: delete_worker(w), width=10).pack(side=tk.RIGHT, padx=5)
|
|
|
|
def show_menu_items():
|
|
def edit_menu_item(m_id):
|
|
cursor.execute("SELECT * FROM menu_items WHERE M_id = %s", (m_id,))
|
|
item = cursor.fetchone()
|
|
if item:
|
|
edit_window = tk.Toplevel()
|
|
edit_window.title("编辑菜单项")
|
|
|
|
tk.Label(edit_window, text="名称:").pack()
|
|
name_entry = tk.Entry(edit_window)
|
|
name_entry.insert(0, item[1])
|
|
name_entry.pack()
|
|
|
|
tk.Label(edit_window, text="类型:").pack()
|
|
type_entry = tk.Entry(edit_window)
|
|
type_entry.insert(0, item[2])
|
|
type_entry.pack()
|
|
|
|
tk.Label(edit_window, text="价格:").pack()
|
|
price_entry = tk.Entry(edit_window)
|
|
price_entry.insert(0, item[3])
|
|
price_entry.pack()
|
|
|
|
def confirm_edit():
|
|
m_name = name_entry.get()
|
|
m_type = type_entry.get()
|
|
m_price = price_entry.get()
|
|
if m_name and m_type and m_price:
|
|
cursor.execute("UPDATE menu_items SET M_name = %s, M_type = %s, M_price = %s WHERE M_id = %s", (m_name, m_type, m_price, m_id))
|
|
conn.commit()
|
|
edit_window.destroy()
|
|
show_menu_items() # 刷新菜单信息
|
|
else:
|
|
messagebox.showwarning("警告", "请完整填写所有信息!")
|
|
|
|
tk.Button(edit_window, text="确认编辑", command=confirm_edit).pack(pady=10)
|
|
|
|
def delete_menu_item(m_id):
|
|
if messagebox.askyesno("确认删除", "确定要删除该菜单项吗?"):
|
|
# 先删除 discount_rules 表中与该菜单项相关的所有记录
|
|
cursor.execute("DELETE FROM discount_rules WHERE M_id = %s", (m_id,))
|
|
conn.commit()
|
|
|
|
# 再删除 menu_items 表中的记录
|
|
cursor.execute("DELETE FROM menu_items WHERE M_id = %s", (m_id,))
|
|
conn.commit()
|
|
|
|
show_menu_items() # 刷新菜单信息
|
|
|
|
cursor.execute("SELECT * FROM menu_items")
|
|
menu_items = cursor.fetchall()
|
|
if not menu_items:
|
|
messagebox.showinfo("提示", "没有菜单信息。")
|
|
return
|
|
|
|
menu_window = tk.Toplevel()
|
|
menu_window.title("菜单信息")
|
|
|
|
for item in menu_items:
|
|
frame = tk.Frame(menu_window)
|
|
frame.pack(pady=5, fill=tk.X)
|
|
tk.Label(frame, text=f"ID: {item[0]}, 名称: {item[1]}, 类型: {item[2]}, 价格: {item[3]}", width=50).pack(side=tk.LEFT)
|
|
tk.Button(frame, text="编辑", command=lambda i=item[0]: edit_menu_item(i), width=10).pack(side=tk.RIGHT, padx=5)
|
|
tk.Button(frame, text="删除", command=lambda i=item[0]: delete_menu_item(i), width=10).pack(side=tk.RIGHT, padx=5)
|
|
|
|
def show_bills():
|
|
def view_bill_details(b_id):
|
|
cursor.execute("SELECT * FROM bills WHERE B_id = %s", (b_id,))
|
|
bill = cursor.fetchone()
|
|
if bill:
|
|
detail_window = tk.Toplevel()
|
|
detail_window.title("账单详情")
|
|
tk.Label(detail_window, text=f"账单ID: {bill[0]}", font=("Arial", 14)).pack(pady=10)
|
|
tk.Label(detail_window, text=f"订单ID: {bill[1]}", font=("Arial", 14)).pack(pady=10)
|
|
tk.Label(detail_window, text=f"总价: {bill[2]} 元", font=("Arial", 14)).pack(pady=10)
|
|
tk.Label(detail_window, text=f"折后价: {bill[3]} 元", font=("Arial", 14)).pack(pady=10)
|
|
tk.Label(detail_window, text=f"时间: {bill[4]}", font=("Arial", 14)).pack(pady=10)
|
|
|
|
cursor.execute("SELECT * FROM bills")
|
|
bills = cursor.fetchall()
|
|
if not bills:
|
|
messagebox.showinfo("提示", "没有账单信息。")
|
|
return
|
|
|
|
bill_window = tk.Toplevel()
|
|
bill_window.title("账单信息")
|
|
|
|
for bill in bills:
|
|
frame = tk.Frame(bill_window)
|
|
frame.pack(pady=5, fill=tk.X)
|
|
tk.Label(frame, text=f"ID: {bill[0]}, 订单ID: {bill[1]}, 总价: {bill[2]}, 折后价: {bill[3]}, 时间: {bill[4]}", width=70).pack(side=tk.LEFT)
|
|
tk.Button(frame, text="查看详情", command=lambda b=bill[0]: view_bill_details(b), width=10).pack(side=tk.RIGHT, padx=5)
|
|
|
|
def show_orders():
|
|
def view_order_details(o_id):
|
|
cursor.execute("SELECT * FROM orders WHERE O_id = %s", (o_id,))
|
|
order = cursor.fetchone()
|
|
if order:
|
|
detail_window = tk.Toplevel()
|
|
detail_window.title("订单详情")
|
|
tk.Label(detail_window, text=f"订单ID: {order[0]}", font=("Arial", 14)).pack(pady=10)
|
|
tk.Label(detail_window, text=f"顾客ID: {order[1]}", font=("Arial", 14)).pack(pady=10)
|
|
tk.Label(detail_window, text=f"时间: {order[2]}", font=("Arial", 14)).pack(pady=10)
|
|
tk.Label(detail_window, text=f"桌号: {order[3]}", font=("Arial", 14)).pack(pady=10)
|
|
tk.Label(detail_window, text=f"服务员ID: {order[4]}", font=("Arial", 14)).pack(pady=10)
|
|
tk.Label(detail_window, text=f"菜品: {order[5]}", font=("Arial", 14)).pack(pady=10)
|
|
|
|
def delete_order(o_id):
|
|
if messagebox.askyesno("确认删除", "确定要删除该订单吗?"):
|
|
cursor.execute("DELETE FROM orders WHERE O_id = %s", (o_id,))
|
|
conn.commit()
|
|
show_orders() # 刷新订单信息
|
|
|
|
cursor.execute("SELECT * FROM orders")
|
|
orders = cursor.fetchall()
|
|
if not orders:
|
|
messagebox.showinfo("提示", "没有订单信息。")
|
|
return
|
|
|
|
order_window = tk.Toplevel()
|
|
order_window.title("订单信息")
|
|
|
|
for order in orders:
|
|
frame = tk.Frame(order_window)
|
|
frame.pack(pady=5, fill=tk.X)
|
|
tk.Label(frame, text=f"ID: {order[0]}, 顾客ID: {order[1]}, 时间: {order[2]}, 桌号: {order[3]}, 服务员ID: {order[4]}, 菜品: {order[5]}", width=70).pack(side=tk.LEFT)
|
|
tk.Button(frame, text="查看详情", command=lambda o=order[0]: view_order_details(o), width=10).pack(side=tk.RIGHT, padx=5)
|
|
tk.Button(frame, text="删除", command=lambda o=order[0]: delete_order(o), width=10).pack(side=tk.RIGHT, padx=5)
|
|
|
|
def show_discounts():
|
|
def edit_discount(m_id):
|
|
cursor.execute("SELECT * FROM discount_rules WHERE M_id = %s", (m_id,))
|
|
discount = cursor.fetchone()
|
|
if discount:
|
|
edit_window = tk.Toplevel()
|
|
edit_window.title("编辑优惠规则")
|
|
|
|
tk.Label(edit_window, text="优惠:").pack()
|
|
discount_entry = tk.Entry(edit_window)
|
|
discount_entry.insert(0, discount[1])
|
|
discount_entry.pack()
|
|
|
|
def confirm_edit():
|
|
d_discount = discount_entry.get()
|
|
if d_discount:
|
|
cursor.execute("UPDATE discount_rules SET discount = %s WHERE M_id = %s", (d_discount, m_id))
|
|
conn.commit()
|
|
edit_window.destroy()
|
|
show_discounts() # 刷新优惠信息
|
|
else:
|
|
messagebox.showwarning("警告", "请完整填写所有信息!")
|
|
|
|
tk.Button(edit_window, text="确认编辑", command=confirm_edit).pack(pady=10)
|
|
|
|
def delete_discount(m_id):
|
|
if messagebox.askyesno("确认删除", "确定要删除该优惠规则吗?"):
|
|
cursor.execute("DELETE FROM discount_rules WHERE M_id = %s", (m_id,))
|
|
conn.commit()
|
|
show_discounts() # 刷新优惠信息
|
|
|
|
cursor.execute("SELECT * FROM discount_rules")
|
|
discounts = cursor.fetchall()
|
|
if not discounts:
|
|
messagebox.showinfo("提示", "没有优惠信息。")
|
|
return
|
|
|
|
discount_window = tk.Toplevel()
|
|
discount_window.title("优惠信息")
|
|
|
|
for discount in discounts:
|
|
frame = tk.Frame(discount_window)
|
|
frame.pack(pady=5, fill=tk.X)
|
|
tk.Label(frame, text=f"ID: {discount[0]}, 优惠: {discount[1]}", width=30).pack(side=tk.LEFT)
|
|
tk.Button(frame, text="编辑", command=lambda d=discount[0]: edit_discount(d), width=10).pack(side=tk.RIGHT, padx=5)
|
|
tk.Button(frame, text="删除", command=lambda d=discount[0]: delete_discount(d), width=10).pack(side=tk.RIGHT, padx=5)
|
|
|
|
def admin_panel():
|
|
admin_window = tk.Toplevel()
|
|
admin_window.title("管理员面板")
|
|
|
|
tk.Button(admin_window, text="顾客信息", command=show_customers, width=20, height=2).pack(pady=10)
|
|
tk.Button(admin_window, text="员工信息", command=show_workers, width=20, height=2).pack(pady=10)
|
|
tk.Button(admin_window, text="菜单", command=show_menu_items, width=20, height=2).pack(pady=10)
|
|
tk.Button(admin_window, text="账单", command=show_bills, width=20, height=2).pack(pady=10)
|
|
tk.Button(admin_window, text="订单", command=show_orders, width=20, height=2).pack(pady=10)
|
|
tk.Button(admin_window, text="优惠信息", command=show_discounts, width=20, height=2).pack(pady=10)
|
|
|
|
def main():
|
|
global main_window
|
|
main_window = tk.Tk()
|
|
main_window.title("餐厅系统")
|
|
|
|
tk.Button(main_window, text="顾客", command=select_table, width=20, height=2).pack(pady=10)
|
|
tk.Button(main_window, text="管理员", command=admin_panel, width=20, height=2).pack(pady=10)
|
|
|
|
main_window.mainloop()
|
|
|
|
if __name__ == "__main__":
|
|
main() |