以下代码使用 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 的 LabelGrid 布局创建表格。该窗口还包含一个表单,用于添加新数据,以及“添加”和“刷新”按钮。

7. 添加数据

add_data() 函数使用 SQL 语句将新数据插入到指定表格中。

8. 刷新表格

refresh_table() 函数刷新表格中的数据。首先删除表格中的所有数据,然后重新查询并显示最新数据。

9. 退出程序

exit_program() 函数关闭与 MySQL 数据库的连接,并销毁所有窗口。

10. 运行程序

最后,调用 login_window() 函数,启动数据管理系统。

总结

本代码演示了如何使用 Python Tkinter 库和 MySQL 数据库构建一个简单的数据管理系统。您可以根据自己的需求修改代码,以实现更多功能。例如,添加数据修改和删除功能,或使用更复杂的数据库结构。

Python Tkinter 和 MySQL 数据库构建数据管理系统

原文地址: https://www.cveoy.top/t/topic/odWB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录