使用 tkinter 按钮从 MySQL 获取数据会重复
Getting data from MySQL using tkinter button gets duplicated
我有一个 python 脚本,它使用 tkinter 和一个按钮从 MySQL 获取数据,但每次我按下按钮时,数据都会像这样复制:
代码如下:
from tkinter import ttk
import tkinter as tk
import mysql.connector
def View():
mydb = mysql.connector.connect(
host="localhost",
user="",
password="",
database=""
)
mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM patients")
rows = mycursor.fetchall()
for row in rows:
print(row)
tree.insert("", tk.END, values=row)
mydb.close()
# connect to the database
root = tk.Tk()
root.geometry("900x350")
tree = ttk.Treeview(root, column=("c1", "c2", "c3"), show='headings')
tree.column("#1", anchor=tk.CENTER)
tree.heading("#1", text="ID")
tree.column("#2", anchor=tk.CENTER)
tree.heading("#2", text="First Name")
tree.column("#3", anchor=tk.CENTER)
tree.heading("#3", text="Country")
tree.pack()
button1 = tk.Button(text="Display data", command=View)
button1.pack()
root.mainloop()
清除上次获取的数据后,如何使其成为print/get数据?
此致,
你可以做一个简单的检查,如果里面有item就删除所有item,如果没有就插入,比如:
def View():
if len(tree.get_children()): # If there are items inside
tree.delete(*tree.get_children()) # Delete all the items
else:
# Paste the rest of code
你也可以定义一个标志,然后检查是否有数据插入,并进行相应的处理,如:
inserted = False # Initially False
def View():
if inserted:
tree.delete(*tree.get_children())
inserted = False # Set it to not inserted
if not inserted: # Let this get triggered
# Same code
for row in rows:
print(row)
tree.insert("", tk.END, values=row)
mydb.close()
inserted = True # Set it to true.
我有一个 python 脚本,它使用 tkinter 和一个按钮从 MySQL 获取数据,但每次我按下按钮时,数据都会像这样复制:
代码如下:
from tkinter import ttk
import tkinter as tk
import mysql.connector
def View():
mydb = mysql.connector.connect(
host="localhost",
user="",
password="",
database=""
)
mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM patients")
rows = mycursor.fetchall()
for row in rows:
print(row)
tree.insert("", tk.END, values=row)
mydb.close()
# connect to the database
root = tk.Tk()
root.geometry("900x350")
tree = ttk.Treeview(root, column=("c1", "c2", "c3"), show='headings')
tree.column("#1", anchor=tk.CENTER)
tree.heading("#1", text="ID")
tree.column("#2", anchor=tk.CENTER)
tree.heading("#2", text="First Name")
tree.column("#3", anchor=tk.CENTER)
tree.heading("#3", text="Country")
tree.pack()
button1 = tk.Button(text="Display data", command=View)
button1.pack()
root.mainloop()
清除上次获取的数据后,如何使其成为print/get数据?
此致,
你可以做一个简单的检查,如果里面有item就删除所有item,如果没有就插入,比如:
def View():
if len(tree.get_children()): # If there are items inside
tree.delete(*tree.get_children()) # Delete all the items
else:
# Paste the rest of code
你也可以定义一个标志,然后检查是否有数据插入,并进行相应的处理,如:
inserted = False # Initially False
def View():
if inserted:
tree.delete(*tree.get_children())
inserted = False # Set it to not inserted
if not inserted: # Let this get triggered
# Same code
for row in rows:
print(row)
tree.insert("", tk.END, values=row)
mydb.close()
inserted = True # Set it to true.