Python Tkinter 和 MySQL 数据库构建数据管理系统
以下代码使用 Python 的 Tkinter 库和 MySQL 数据库构建了一个简单的数据管理系统。该系统提供了基本的数据管理功能,例如登录验证、表格选择、数据查看和添加。请注意,此代码仅供参考,您可能需要根据您的特定需求进行修改。
import pymysql
import tkinter as tk
from tkinter import messagebox
# 连接到 MySQL 数据库
conn = pymysql.connect(
host='localhost',
user='root',
password='password',
db='database_name'
)
# 创建游标对象
cursor = conn.cursor()
# 创建登录窗口
def login_window():
global login_screen
login_screen = tk.Tk()
login_screen.title('登录')
login_screen.geometry('300x250')
tk.Label(login_screen, text='请输入用户名和密码').pack()
tk.Label(login_screen, text='').pack()
global username_verify
global password_verify
username_verify = tk.StringVar()
password_verify = tk.StringVar()
global username_entry
global password_entry
tk.Label(login_screen, text='用户名').pack()
username_entry = tk.Entry(login_screen, textvariable=username_verify)
username_entry.pack()
tk.Label(login_screen, text='密码').pack()
password_entry = tk.Entry(login_screen, textvariable=password_verify, show='*')
password_entry.pack()
tk.Label(login_screen, text='').pack()
tk.Button(login_screen, text='登录', width=10, height=1, command=login).pack()
login_screen.mainloop()
# 验证登录信息
def login():
username = username_verify.get()
password = password_verify.get()
sql = 'SELECT * FROM users WHERE username=%s AND password=%s'
cursor.execute(sql, (username, password))
result = cursor.fetchone()
if result:
login_screen.destroy()
main_window()
else:
messagebox.showerror('错误', '用户名或密码不正确')
# 创建主窗口
def main_window():
global main_screen
main_screen = tk.Tk()
main_screen.title('数据管理系统')
main_screen.geometry('300x250')
tk.Label(main_screen, text='选择要操作的表').pack()
tk.Label(main_screen, text='').pack()
tk.Button(main_screen, text='表1', width=10, height=1, command=lambda: table_window('table1')).pack()
tk.Button(main_screen, text='表2', width=10, height=1, command=lambda: table_window('table2')).pack()
tk.Button(main_screen, text='表3', width=10, height=1, command=lambda: table_window('table3')).pack()
tk.Label(main_screen, text='').pack()
tk.Button(main_screen, text='退出', width=10, height=1, command=exit_program).pack()
main_screen.mainloop()
# 创建表窗口
def table_window(table_name):
global table_screen
table_screen = tk.Toplevel(main_screen)
table_screen.title(table_name)
table_screen.geometry('600x400')
# 查询表中的数据
sql = 'SELECT * FROM ' + table_name
cursor.execute(sql)
rows = cursor.fetchall()
# 创建表格
table = tk.Frame(table_screen)
table.pack(side=tk.TOP, padx=10, pady=10)
tk.Label(table, text='ID').grid(row=0, column=0)
tk.Label(table, text='姓名').grid(row=0, column=1)
tk.Label(table, text='年龄').grid(row=0, column=2)
for i, row in enumerate(rows):
tk.Label(table, text=row[0]).grid(row=i+1, column=0)
tk.Label(table, text=row[1]).grid(row=i+1, column=1)
tk.Label(table, text=row[2]).grid(row=i+1, column=2)
# 添加数据的表单
form = tk.Frame(table_screen)
form.pack(side=tk.TOP, padx=10, pady=10)
tk.Label(form, text='姓名').grid(row=0, column=0)
tk.Label(form, text='年龄').grid(row=1, column=0)
name_entry = tk.Entry(form)
name_entry.grid(row=0, column=1)
age_entry = tk.Entry(form)
age_entry.grid(row=1, column=1)
# 添加数据的按钮
tk.Button(form, text='添加', width=10, height=1, command=lambda: add_data(table_name, name_entry.get(), age_entry.get())).grid(row=2, column=0, pady=10)
tk.Button(form, text='刷新', width=10, height=1, command=lambda: refresh_table(table_name, table)).grid(row=2, column=1, pady=10)
# 添加数据到表中
def add_data(table_name, name, age):
sql = 'INSERT INTO ' + table_name + ' (name, age) VALUES (%s, %s)'
cursor.execute(sql, (name, age))
conn.commit()
# 刷新表格中的数据
def refresh_table(table_name, table):
# 删除表格中的原有数据
for widget in table.winfo_children():
widget.destroy()
# 查询表中的新数据
sql = 'SELECT * FROM ' + table_name
cursor.execute(sql)
rows = cursor.fetchall()
# 重新创建表格
tk.Label(table, text='ID').grid(row=0, column=0)
tk.Label(table, text='姓名').grid(row=0, column=1)
tk.Label(table, text='年龄').grid(row=0, column=2)
for i, row in enumerate(rows):
tk.Label(table, text=row[0]).grid(row=i+1, column=0)
tk.Label(table, text=row[1]).grid(row=i+1, column=1)
tk.Label(table, text=row[2]).grid(row=i+1, column=2)
# 退出程序
def exit_program():
conn.close()
main_screen.destroy()
# 运行程序
login_window()
在这个示例中,我们创建了三个表格('table1','table2' 和 'table3')以及一个名为“users”的用户表。在登录窗口中,用户必须输入用户名和密码才能登录。在主窗口中,用户可以选择要操作的表格。在每个表格窗口中,用户可以查看表格中的数据,添加新数据并刷新表格。最后,在退出程序时,我们关闭了与 MySQL 数据库的连接并销毁了所有窗口。
代码解释
1. 连接到 MySQL 数据库
首先,使用 pymysql 库连接到 MySQL 数据库。需要提供数据库的主机地址 (host),用户名 (user),密码 (password) 和数据库名称 (db)。
2. 创建游标对象
创建一个游标对象 (cursor),用于执行 SQL 语句。
3. 登录窗口
创建一个登录窗口 (login_screen),其中包含两个输入框,用于输入用户名和密码。使用 StringVar 对象存储用户名和密码的值。登录按钮绑定到 login() 函数。
4. 验证登录信息
login() 函数获取用户名和密码,并使用 SQL 语句查询用户表,检查用户名和密码是否匹配。如果匹配,则销毁登录窗口并创建主窗口。否则,显示错误消息。
5. 主窗口
创建一个主窗口 (main_screen),其中包含三个按钮,分别用于选择三个表格。使用 lambda 函数将每个按钮绑定到相应的 table_window() 函数。
6. 表窗口
table_window() 函数创建表格窗口,用于显示和操作指定表格的数据。首先查询表格中的数据,然后使用 Tkinter 的 Label 和 Grid 布局创建表格。该窗口还包含一个表单,用于添加新数据,以及“添加”和“刷新”按钮。
7. 添加数据
add_data() 函数使用 SQL 语句将新数据插入到指定表格中。
8. 刷新表格
refresh_table() 函数刷新表格中的数据。首先删除表格中的所有数据,然后重新查询并显示最新数据。
9. 退出程序
exit_program() 函数关闭与 MySQL 数据库的连接,并销毁所有窗口。
10. 运行程序
最后,调用 login_window() 函数,启动数据管理系统。
总结
本代码演示了如何使用 Python Tkinter 库和 MySQL 数据库构建一个简单的数据管理系统。您可以根据自己的需求修改代码,以实现更多功能。例如,添加数据修改和删除功能,或使用更复杂的数据库结构。
原文地址: https://www.cveoy.top/t/topic/odWB 著作权归作者所有。请勿转载和采集!