Hi; I created an application that is based on the introduction of data stored in txt files. the content of these files is displayed in text widget
my problem is that I can not get the automatic refresh of the text widget display
the code in python 3.6, and it cutted into several parts :
part of code for functions
code for notebook and label :
I need help to rectify my code
thanks for help
my problem is that I can not get the automatic refresh of the text widget display
the code in python 3.6, and it cutted into several parts :
Code:
from tkinter import *
from tkinter.ttk import Notebook
import tkinter.ttk as ttk
import time
#window
root=Tk()
root.geometry('450x350')
root.title('test')
#variables
ent_releves1=StringVar()
ent_releves2=StringVar()
Code:
#Functions:
def archiver():
archive_monitoring={"date" : time.strftime('%d/%m/%y', time.localtime()),
"releves_mesure1": ent_releves1.get(),
"releves_mesure2": ent_releves2.get(), }
if (ent_releves1.get() !="" ) :
mon_fichier1 = open("save1/monitor1.txt", "r")
text1 = mon_fichier1.read()
mon_fichier1.close()
textInsert1=str(archive_monitoring["date"])+"\t" +str(archive_monitoring["releves_mesure1"])+"\n"
fileW1 = open("save1/monitor1.txt", "w")
fileW1.write(textInsert1 + text1)
fileW1.close()
if (ent_releves2.get() !="" ) :
mon_fichier2 = open("save1/monitor2.txt", "r")
text2 = mon_fichier2.read()
mon_fichier2.close()
textInsert2=str(archive_monitoring["date"])+"\t" +str(archive_monitoring["releves_mesure2"])+"\n"
fileW2 = open("save1/monitor2.txt", "w")
fileW2.write(textInsert2 + text2)
fileW2.close()
Code:
def affichage_update ():
with open('save1/monitor1.txt',"r") as monitor1, open('save1/monitor2.txt',"r") as monitor2:
s= Scrollbar(releves)
T= Text(releves,bg='powder blue',width=450,height=350,font=('arial',14,'bold'),pady=25)
s.pack(side=RIGHT, fill=Y)
T.pack(side=LEFT, fill=Y)
s.config(command=T.yview)
T.config(yscrollcommand=s.set)
while True:
line1 = monitor1.readline()
if len(line1) == 0:
break
line1 = line1.strip().split()
line2 = monitor2.readline()
line2 = line2.strip().split()
T.insert(END, f'{line1[0]:15}\t {line1[1]:10}\t\t {line2[1]:10}\n')
T.update_idletasks()
T.after(500,affichage_update)
Code:
container=ttk.Notebook(root,width=450,height=350) monitoring=Frame(container,bg='powder blue') container.add(monitoring,text='monitor data') releves=Frame(container,bg='powder blue') container.add(releves,text='releves') lbf1 = LabelFrame(monitoring, text="Lecture Monitor 1",padx=10, pady=10) lbf1.pack(side=LEFT,padx=10, pady=10,anchor=NE) entry_lbf1= Entry(lbf1,textvariable=ent_releves1) entry_lbf1.pack(pady=5) lbf2 = LabelFrame(monitoring, text="Lecture Monitor 2",padx=10, pady=10) lbf2.pack(side=LEFT,padx=10, pady=10,anchor=NW) entry_lbf2= Entry(lbf2,textvariable=ent_releves2) entry_lbf2.pack(pady=5) bt_archiver=Button(monitoring,text='Archiver',command=archiver) bt_archiver.place(x=40,y=120)
Code:
generalites_top=Frame(releves,bg='powder blue',width=450)
generalites_top.pack(side=TOP,fill=X)
generalites_bottom=Frame(releves,bg='powder blue')
generalites_bottom.pack(side=BOTTOM)
head_axe_loc35L = ['Date', 'Monitor 1', 'Monitor 2']
lb_date=Label(generalites_top,text=f'{head_axe_loc35L[0]:15}',bg='powder blue',font=('arial',12,'bold'))
lb_date.pack(side=LEFT,padx=5,anchor=NW)
lb_monitor1=Label(generalites_top,text=f'{head_axe_loc35L[1]:10}',bg='powder blue',font=('arial',12,'bold'))
lb_monitor1.pack( side=LEFT)
lb_monitor2=Label(generalites_top,text=f'{head_axe_loc35L[2]:10}',bg='powder blue',font=('arial',12,'bold'))
lb_monitor2.pack(padx=70, side=LEFT)
Code:
with open('save1/monitor1.txt',"r") as monitor1, open('save1/monitor2.txt',"r") as monitor2:
s= Scrollbar(releves)
T= Text(releves,bg='powder blue',width=450,height=350,font=('arial',14,'bold'),pady=25)
s.pack(side=RIGHT, fill=Y)
T.pack(side=LEFT, fill=Y)
s.config(command=T.yview)
T.config(yscrollcommand=s.set)
while True:
line1 = monitor1.readline()
if len(line1) == 0:
break
line1 = line1.strip().split()
line2 = monitor2.readline()
line2 = line2.strip().split()
T.insert(END, f'{line1[0]:15}\t {line1[1]:10}\t\t {line2[1]:10}\n')
T.update_idletasks()
T.after(500,affichage_update)
container.pack(expand=1, fill='both', padx=5, pady=5)
root.mainloop()
thanks for help
Comment