python treeview 设置修改按钮修改treeview和mysql数据库中的某一行
时间: 2024-01-22 22:20:11 浏览: 151
要实现这个功能,你需要先创建一个 Treeview 控件,并且将数据从 MySQL 数据库中加载到 Treeview 中。然后,你需要创建一个“修改”按钮,当用户点击该按钮时,它将获取所选行的数据,并将其填充到表单中。最后,用户修改表单中的数据,并再次点击“修改”按钮以更新 MySQL 数据库和 Treeview 控件。
以下是一个示例代码,它演示了如何实现这个功能:
```python
import mysql.connector
from tkinter import *
from tkinter import ttk
# 创建 MySQL 连接
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="yourdatabase"
)
# 创建 Tkinter 窗口
root = Tk()
# 创建 Treeview 控件
tree = ttk.Treeview(root)
tree["columns"] = ("Name", "Age", "Gender")
# 定义 Treeview 列
tree.column("#0", width=0, stretch=NO)
tree.column("Name", width=100)
tree.column("Age", width=100)
tree.column("Gender", width=100)
# 定义 Treeview 列标题
tree.heading("#0", text="", anchor=W)
tree.heading("Name", text="Name", anchor=W)
tree.heading("Age", text="Age", anchor=W)
tree.heading("Gender", text="Gender", anchor=W)
# 加载数据到 Treeview 中
mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM people")
for row in mycursor.fetchall():
tree.insert("", "end", text=row[0], values=(row[1], row[2], row[3]))
# 创建“修改”按钮
def modify():
# 获取所选行的数据
selected_item = tree.selection()[0]
name = tree.item(selected_item)["values"][0]
age = tree.item(selected_item)["values"][1]
gender = tree.item(selected_item)["values"][2]
# 创建表单
form = Toplevel()
form.title("Modify Person")
# 创建表单字段
name_label = Label(form, text="Name")
name_label.grid(row=0, column=0)
name_entry = Entry(form)
name_entry.grid(row=0, column=1)
name_entry.insert(0, name)
age_label = Label(form, text="Age")
age_label.grid(row=1, column=0)
age_entry = Entry(form)
age_entry.grid(row=1, column=1)
age_entry.insert(0, age)
gender_label = Label(form, text="Gender")
gender_label.grid(row=2, column=0)
gender_entry = Entry(form)
gender_entry.grid(row=2, column=1)
gender_entry.insert(0, gender)
# 创建“修改”按钮
def update():
# 更新 MySQL 数据库
mycursor = mydb.cursor()
mycursor.execute("UPDATE people SET name=%s, age=%s, gender=%s WHERE name=%s", (name_entry.get(), age_entry.get(), gender_entry.get(), name))
mydb.commit()
# 更新 Treeview 控件
tree.item(selected_item, text="", values=(name_entry.get(), age_entry.get(), gender_entry.get()))
# 关闭表单
form.destroy()
update_button = Button(form, text="Modify", command=update)
update_button.grid(row=3, column=1)
modify_button = Button(root, text="Modify", command=modify)
modify_button.pack()
# 显示 Treeview 控件
tree.pack()
root.mainloop()
```
这个示例程序演示了如何创建一个 Treeview 控件,并将数据从 MySQL 数据库中加载到 Treeview 中。它还演示了如何创建一个“修改”按钮,并在用户点击该按钮时,获取所选行的数据并将其填充到表单中。最后,它演示了如何更新 MySQL 数据库和 Treeview 控件以反映用户所做的更改。
阅读全文