自动刷新文本wiget-tkinter
嗨;我创建了一个基于存储在txt文件中的数据介绍的应用程序。这些文件的内容显示在文本微件中
我的问题是我无法自动刷新文本小工具的显示
Python3.6中的代码,它被分成几个部分:
选择 | 换行 | 行号
- 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("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()
选择 | 换行 | 行号
- 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)
笔记本和标签代码:
选择 | 换行 | 行号
- 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('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()
我需要帮助来纠正我的代码
谢谢你的帮助