Python Tkinter, обновление данных
Я создаю приложение на PYTHON, я также использую в нем SQL, Tkinter и ООП. В нем есть функции, с которыми возникают трудности, а именно:
- Функция "tuple_selection" - она берет все данные из таблицы в SQL и преобразует их в список карточек, который затем передается в переменную "table_data".
- Функция "show_statistics" - это необходимо для того, чтобы кнопка (tkinter) вызывала другую функцию "open_statistics", которая в свою очередь принимает ту же переменную "table_data" с картриджей.
- Функция "open_statistics" - создает окно, в котором создает таблицу и передает в нее данные из "table_data". Программа имеет главное окно (в нем заполняется форма и сохраняется в базе данных) и окно, которое открывает "open_statistics" и отображает эти данные в виде таблицы. Сама проблема заключается в следующем: "Как сделать так, чтобы данные в 'open_statistics' постоянно обновлялись, без необходимости постоянно перезапускать программу"?
connection.py:
def tuple_selection():
with connect(file_path) as connection:
cursor = connection.cursor()
cursor.execute("SELECT * FROM statistics")
records = cursor.fetchall()
employee_tuples_list = [tuple(record) for record in records]
return employee_tuples_list
table_data = tuple_selection()
interface.py:
def show_statistics():
open_statistics(table_data)
def open_statistics(data):
statistics = Toplevel()
statistics.geometry("950x400")
statistics.title("Statistics")
statistics.resizable(width=False, height=False)
def update():
data = tuple_selection()
return data
statistics.after(1000, update)
def update():
data = tuple_selection()
return data
statistics.after(1000, update)
def sort_column(tree, col, reverse):
data = [(float(tree.set(child, col)), child) for child in tree.get_children('')]
data.sort(reverse=reverse)
for index, (value, child) in enumerate(data):
tree.move(child, '', index)
tree.heading(col, command=lambda: sort_column(tree, col, not reverse))
def update_statistics():
table.delete(*table.get_children()) # Clear the current table contents
for row in update():
table.insert('', tk.END, values=row)
statistics.after(1000, update_statistics)
heads = ["DATE VALUE", "TIME VALUE", "TOURNAMENT NAME", "BUY-IN", "QUANTITY BUY-IN", "PLAYER COUNT", "TOURNAMENT PLACE", "GAIN"]
table = ttk.Treeview(statistics, show="headings")
table["columns"] = heads
for header in heads:
table.heading(header, text=header, anchor="center", command=lambda col=header: sort_column(table, col, False))
table.column(header, anchor="center", width=100)
scrollpane = ttk.Scrollbar(statistics, command=table.yview)
scrollpane.pack(side=tk.RIGHT, fill=tk.Y)
table.pack(expand=tk.YES, fill=tk.BOTH)
table.configure(yscrollcommand=scrollpane.set)
update_statistics()
Источник: Stack Overflow на русском