Я пытаюсь обновить свою таблицу Tkinter живыми данными. Пока что мне удалось создать GUI и установить значения из API в метках таблицы. Однако я не могу обновить его после запуска главного окна l oop. Вот пример моего кода:
from __future__ import print_function
from tkinter import *
from tkinter import Label,Frame,Tk, Scale, StringVar
from tkinter.ttk import Notebook, Entry
def getValue(value):
print(value)
window = Tk()
window.title("Table GUI")
window.configure(bg="pink")
window.geometry("300x305")
varas1=StringVar()
varas2=StringVar()
varas3=StringVar()
vara1=StringVar()
vara2=StringVar()
vara3=StringVar()
varp1=StringVar()
varp2=StringVar()
varp3=StringVar()
varb1=StringVar()
varb2=StringVar()
varb3=StringVar()
frame2=Frame(window)
frame2.pack(fill="both")
tablayout=Notebook(frame2)
tab1=Frame(tablayout)
for row in range(11):
for column in range (3):
if row==0 and column==0:
label= Label(tab1,text="Headline1", bg="green", fg="blue", padx=3, pady=3)
label.config(font=('Arial',16))
label.grid(row=row,column=column,sticky="nsew", padx=1, pady=1)
tab1.grid_columnconfigure(column, weight=1)
if row==1 and column==2:
label = Label(tab1,textvar=vara1,bg="pink", fg="Red", padx=3, pady=3) #Entry or Label with colours
label.grid(row=row,column=column,sticky="nsew", padx=1, pady=1)
tab1.grid_columnconfigure(column, weight=1)
if row==2 and column==2:
label = Label(tab1,textvar=vara2,bg="pink", fg="Red", padx=3, pady=3) #Entry or Label with colours
label.grid(row=row,column=column,sticky="nsew", padx=1, pady=1)
tab1.grid_columnconfigure(column, weight=1)
if row==3 and column==2:
label = Label(tab1,textvar=vara3,bg="pink", fg="Red", padx=3, pady=3) #Entry or Label with colours
label.grid(row=row,column=column,sticky="nsew", padx=1, pady=1)
tab1.grid_columnconfigure(column, weight=1)
tablayout.pack(fill="both")
Затем я помещаю функцию, которая через некоторое время запрашивает веб-сокет. L oop
While true:
Retrievedatafromwsusingaconnector()
vara=apiresult['dataA']
VarA[(vara[0]),
(vara[1]),
(vara[2])]
И, наконец, я связываю переменные, полученные из веб-сокета к тем, которые я определил ранее:
varas3.set(VarA[0])
varas2.set(VarA[1])
varas1.set(VarA[2])
Затем запустите mainl oop:
window.mainloop()
Я прочитал в другом подобном посте (Python Tkinter, Display Live Data ), что я мог бы использовать функцию windows .update (), но я не могу понять, как я могу отдельно запускать запросы ws из windows .mainl oop () при одновременном обновлении меток таблицы. Возможно, я мог бы сделать это асинхронно из того же кода? Или мне нужно создать обновленную базу данных и просто прочитать ее Tkinter? Спасибо