TkinterALL与数据库交互:实现数据的增删改查
发布时间:2024-01-18 16:15:14
在Tkinter中与数据库交互,可以使用Python内置的sqlite3模块来实现数据的增删改查操作。以下是一个示例代码,演示了如何在Tkinter中实现数据的增删改查。
import tkinter as tk
import sqlite3
def create_table():
conn = sqlite3.connect("example.db")
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS students
(id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER NOT NULL,
gender TEXT NOT NULL);''')
conn.commit()
conn.close()
def insert_data():
name = entry_name.get()
age = entry_age.get()
gender = entry_gender.get()
conn = sqlite3.connect("example.db")
c = conn.cursor()
c.execute("INSERT INTO students (name, age, gender) VALUES (?, ?, ?)",
(name, age, gender))
conn.commit()
conn.close()
show_data()
def delete_data():
selected_item = listbox.curselection()
if selected_item:
id = listbox.get(selected_item)[0]
conn = sqlite3.connect("example.db")
c = conn.cursor()
c.execute("DELETE FROM students WHERE id=?", (id,))
conn.commit()
conn.close()
show_data()
def update_data():
selected_item = listbox.curselection()
if selected_item:
id = listbox.get(selected_item)[0]
name = entry_name.get()
age = entry_age.get()
gender = entry_gender.get()
conn = sqlite3.connect("example.db")
c = conn.cursor()
c.execute("UPDATE students SET name=?, age=?, gender=? WHERE id=?",
(name, age, gender, id))
conn.commit()
conn.close()
show_data()
def search_data():
search_name = entry_search.get()
conn = sqlite3.connect("example.db")
c = conn.cursor()
c.execute("SELECT * FROM students WHERE name LIKE ?", ('%'+search_name+'%',))
results = c.fetchall()
conn.close()
listbox.delete(0, tk.END)
for row in results:
listbox.insert(tk.END, row)
def show_data():
conn = sqlite3.connect("example.db")
c = conn.cursor()
c.execute("SELECT * FROM students")
results = c.fetchall()
conn.close()
listbox.delete(0, tk.END)
for row in results:
listbox.insert(tk.END, row)
# 创建数据库表
create_table()
# 创建Tkinter应用
root = tk.Tk()
# 创建控件
label_name = tk.Label(root, text="Name:")
label_name.grid(row=0, column=0)
entry_name = tk.Entry(root)
entry_name.grid(row=0, column=1)
label_age = tk.Label(root, text="Age:")
label_age.grid(row=1, column=0)
entry_age = tk.Entry(root)
entry_age.grid(row=1, column=1)
label_gender = tk.Label(root, text="Gender:")
label_gender.grid(row=2, column=0)
entry_gender = tk.Entry(root)
entry_gender.grid(row=2, column=1)
button_insert = tk.Button(root, text="Insert", command=insert_data)
button_insert.grid(row=3, column=0)
button_delete = tk.Button(root, text="Delete", command=delete_data)
button_delete.grid(row=3, column=1)
button_update = tk.Button(root, text="Update", command=update_data)
button_update.grid(row=3, column=2)
label_search = tk.Label(root, text="Search:")
label_search.grid(row=4, column=0)
entry_search = tk.Entry(root)
entry_search.grid(row=4, column=1)
button_search = tk.Button(root, text="Search", command=search_data)
button_search.grid(row=4, column=2)
listbox = tk.Listbox(root)
listbox.grid(row=5, column=0, columnspan=3)
# 显示数据
show_data()
# 启动Tkinter事件循环
root.mainloop()
在以上代码中,我们使用了一个名为students的数据库表,包含了id、name、age和gender四个字段。每当我们插入、删除、更新或搜索数据时,都是通过与数据库建立连接,执行相应的数据库操作,然后关闭连接。
使用示例代码时,我们首先要确保已经安装了sqlite3模块,并创建了名为example.db的SQLite数据库文件。然后,通过运行代码,可以看到一个基本的Tkinter应用界面,包含了输入框、按钮和列表框。我们可以在输入框中输入学生的姓名、年龄和性别,点击Insert按钮插入数据。列表框会显示数据库中的所有学生数据。我们可以选中某个学生数据,点击Delete按钮删除该学生数据,点击Update按钮更新该学生数据。我们还可以在搜索输入框中输入关键字,点击Search按钮进行模糊搜索,列表框会显示搜索结果。
通过这个示例,我们可以看到如何在Tkinter中实现数据的增删改查,以及如何与数据库交互。我们可以根据实际需求进行相应的修改和扩展,以满足更加复杂的业务需求。
