python - 如何使用删除按钮删除特定事件?
问题描述
我的代码中有一个迭代,显示每一行:ID/名称/按钮删除。你可以看到下面的图片。我希望当我单击其中一个删除按钮时,同一行上的数据将被删除。我尽力了,你可以看到我的代码。我该怎么做?十分感谢。
from tkinter import *
import mysql.connector
def main():
root = Tk()
conn = mysql.connector.connect(user='root', password='', host='localhost',
database='showmanager')
my_cursor = conn.cursor()
var_i = 3
def del_customer():
my_cursor.execute("DELETE FROM `spectator` "
"WHERE `spectator`.`id_customer` = "+user[0]+"")
my_cursor.execute("SELECT * FROM spectator")
users = my_cursor.fetchall()
for user in users:
label = Label(root, text=user, font=9)
label.grid(row=int(var_i), column=1)
Button(root, text="Delete spectator", font=9, height=1,
command=del_customer).grid(row=int(var_i), column=4)
var_i = var_i + 1
root.mainloop()
if __name__ == '__main__':
main()
解决方案
您可以将客户 ID 和相应的小部件(标签和按钮)传递给,del_customer()
以便您可以根据客户 ID 和函数内部的相应标签和按钮删除数据库中的记录:
def del_customer(cust_id, widgets):
my_cursor.execute("DELETE FROM spectator WHERE id_customer = %s", [cust_id])
conn.commit() # make the change effective
# remove the corresponding label and button
for w in widgets:
w.destroy()
...
for user in users:
label = Label(root, text=user)
label.grid(row=var_i, column=1)
btn = Button(root, text="Delete spectator")
btn.grid(row=var_i, column=4)
var_i += 1
# pass the customer ID, label and button to del_customer()
btn['command'] = lambda cust_id=user[0], widgets=(label, btn): del_customer(cust_id, widgets)
推荐阅读
- javascript - 实例化对象如何导出和导入 JS 文件?
- android - Kotlin 的后期初始化
- docker - 在 docker-compose.yaml 中设置 security_opt 不起作用
- php - 使用 Carbon 将日期保存到数据库中
- vb.net - 在焦点文本框和 DataGridView 单元格上使用虚拟键盘
- javascript - TypeError:无法读取注册页面未定义的属性“值”
- scala - 用于填充缺失值的 Spark Imputer
- pytorch - pytorch中维度的子空间是什么?
- android - Firebase 电话身份验证不发送 OTP
- clojure - 用函数概括嵌套调用 map