import tkinter as tk import pymysql import matplotlib.pyplot as plt con = pymysql.connect( host='localhost', user='root', password='root', database='health', charset='utf8mb4', autocommit=True ) cursor = con.cursor() # 创建游标对象 def button1(): cursor.execute("select * from health") result = cursor.fetchall() # 创建一个新的窗口 result_window = tk.Toplevel(root) result_window.title("查询结果") # 创建一个文本框用于显示查询结果 result_text = tk.Text(result_window) result_text.pack(pady=10) # 将查询结果存储到一个变量中 result_str = "" for row in result: result_str += str(row) + "\n" # 将查询结果显示在文本框中 result_text.insert(tk.END, result_str) result_text.config(state=tk.DISABLED) def button2(): root = tk.Tk() root.title("new") root.geometry("500x500") screen_width = root.winfo_screenwidth() screen_height = root.winfo_screenheight() l1 = tk.Label(root, text="姓名:", width=30, height=2) l1.pack() entry1 = tk.Entry(root) entry1.pack() l2 = tk.Label(root, text="性别:", width=30, height=2) l2.pack() entry2 = tk.Entry(root) entry2.pack() l3 = tk.Label(root, text="年龄:", width=30, height=2) l3.pack() entry3 = tk.Entry(root) entry3.pack() l4 = tk.Label(root, text="身高:", width=30, height=2) l4.pack() entry4 = tk.Entry(root) entry4.pack() l5 = tk.Label(root, text="体重:", width=30, height=2) l5.pack() entry5 = tk.Entry(root) entry5.pack() # 定义按钮的响应函数 def button(): # con = pymysql.connect( # host='localhost', # user='root', # password='root', # database='health', # charset='utf8mb4', # autocommit=True # ) # cursor = con.cursor() # 创建游标对象 cursor.execute("select * from health") result = cursor.fetchall() l1.config(text="新建成功!") name = entry1.get() sex = entry2.get() age = entry3.get() height = entry4.get() weight = entry5.get() if not name or not age or not sex or not height or not weight: l1.config(text='添加失败,请填写完整信息') l1.after(2000, lambda: l1.config(text="姓名:")) # 2秒消失 return try: cursor.execute("INSERT INTO health (name,age,sex,height,weight) VALUES (%s, %s, %s, %s, %s)", (name,age,sex,height,weight)) con.commit() l1.config(text='添加成功!') except Exception as e: l1.config(text='添加失败!') # 创建按钮 button = tk.Button(root, text="确认新建", command=button) button.pack() def button3(): root = tk.Tk() root.title("new") root.geometry("500x500") screen_width = root.winfo_screenwidth() screen_height = root.winfo_screenheight() l1 = tk.Label(root, text="姓名:", width=30, height=2) l1.pack() entry1 = tk.Entry(root) entry1.pack() l2 = tk.Label(root, text="月份:", width=30, height=2) l2.pack() entry2 = tk.Entry(root) entry2.pack() l3 = tk.Label(root, text="身高:", width=30, height=2) l3.pack() entry3 = tk.Entry(root) entry3.pack() l4 = tk.Label(root, text="体重:", width=30, height=2) l4.pack() entry4 = tk.Entry(root) entry4.pack() # 定义按钮的响应函数 def button(): try: # 从输入框获取数据 name = entry1.get() month = entry2.get() height = entry3.get() weight = entry4.get() # 检查是否所有输入框都已填写 if not all([name, month, height, weight]): l1.config(text='添加失败,请填写完整信息') # 2秒后重置文本 l1.after(2000, lambda: l1.config(text="姓名:")) return # 执行插入操作 cursor.execute("INSERT INTO month (name, month, height, weight) VALUES (%s, %s, %s, %s)", (name, month, height, weight)) con.commit() # 提交事务 l1.config(text='添加成功!') except Exception as e: l1.config(text=f'添加失败:{e}') button = tk.Button(root, text="确认新建", command=button) button.pack() def button4(): def show_query_result(): user_input = entry.get() if user_input: # 确保用户输入不为空 # 根据用户输入查询 name cursor.execute("SELECT name, height, weight FROM month WHERE name LIKE %s", ('%' + user_input + '%',)) result = cursor.fetchall() # 获取查询结果 # 清空结果标签的旧内容 result_label.config(text="") if result: # 此处 result 已包含 name, height, weight,可以直接使用 身高 = [row[1] for row in result] # 假设 height 是第二列 体重 = [row[2] for row in result] # 假设 weight 是第三列 plt.scatter(身高, 体重) plt.title("身高 和 体重", fontproperties="SimHei") plt.xlabel('身高', fontproperties="SimHei") plt.ylabel('体重', fontproperties="SimHei") plt.show() else: result_label.config(text="没有找到匹配的数据。") else: result_label.config(text="请输入查询的名字。") query_window = tk.Toplevel(root) query_window.title("查询健康信息") query_window.geometry("300x200") l0 = tk.Label(query_window, text="请输入需要查询的用户:", width=30, height=2) l0.pack() entry = tk.Entry(query_window) entry.pack() get_input_button = tk.Button(query_window, text="确认查询", command=show_query_result) get_input_button.pack() result_label = tk.Label(query_window, text="") result_label.pack() def button5(): root.destroy() #这是主界面 root = tk.Tk() root.title("Health") root.geometry("500x500") screen_width = root.winfo_screenwidth() screen_height = root.winfo_screenheight() x = (screen_width - 500) // 2 y = (screen_height - 500) // 2 root.geometry("+{}+{}".format(x, y)) button1 = tk.Button(root, text="用户列表", command=button1) button1.pack(pady=10) button2 = tk.Button(root, text="新建用户信息", command=button2) button2.pack(pady=10) button3 = tk.Button(root, text="新建用户健康指数", command=button3) button3.pack(pady=10) button4 = tk.Button(root, text="查询健康指数", command=button4) button4.pack(pady=10) button5 = tk.Button(root, text="退出程序", command=button5) button5.pack(pady=10) root.mainloop()