URL: https://linuxfr.org/forums/programmation-python/posts/actualisation-automatique-le-contenu-du-widget-text-dans-tkinter Title: actualisation automatique le contenu du widget Text dans tkinter Authors: atlass218 Date: 2018年11月26日T03:07:40+01:00 License: CC By-SA Tags: tkinter Score: 3 bonjour; je suis entrain de finaliser un projet, et j'ai rencontre un problème concernant l'actualisation automatique (update) du contenu du widget tkinter Text . voci le code correspondant à la partie qui pose problème : ```python 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() #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("save/monitor1.txt", "r") text1 = mon_fichier1.read() mon_fichier1.close() textInsert1=str(archive_monitoring["date"])+"\t" +str(archive_monitoring["releves_mesure1"])+"\n" fileW1 = open("save/monitor1.txt", "w") fileW1.write(textInsert1 + text1) fileW1.close() if (ent_releves2.get() !="" ) : mon_fichier2 = open("save/monitor2.txt", "r") text2 = mon_fichier2.read() mon_fichier2.close() textInsert2=str(archive_monitoring["date"])+"\t" +str(archive_monitoring["releves_mesure2"])+"\n" fileW2 = open("save/monitor2.txt", "w") fileW2.write(textInsert2 + text2) fileW2.close() def affichage_update (): with open('save/monitor1.txt',"r") as monitor1, open('save/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=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) 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) with open('save/monitor1.txt',"r") as monitor1, open('save/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() ```