Python Tkinter, обновление данных

Рейтинг: 0Ответов: 0Опубликовано: 31.07.2023

Я создаю приложение на PYTHON, я также использую в нем SQL, Tkinter и ООП. В нем есть функции, с которыми возникают трудности, а именно:

  1. Функция "tuple_selection" - она берет все данные из таблицы в SQL и преобразует их в список карточек, который затем передается в переменную "table_data".
  2. Функция "show_statistics" - это необходимо для того, чтобы кнопка (tkinter) вызывала другую функцию "open_statistics", которая в свою очередь принимает ту же переменную "table_data" с картриджей.
  3. Функция "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()

Ответы

Ответов пока нет.