Posts: 126
Threads: 29
Joined: Aug 2018
hi
I try to update the content of Text widget by using this fonction:
def affichage_ddm_axe_loc35R_update ():
with open('archives/ILS_35R/loc35R/releves_mesure_loc35R/ddm_axe_loc35R/ddm_axe_monitor1_loc35R.txt') as ddm_axe_monitor1, open('archives/ILS_35R/loc35R/releves_mesure_loc35R/ddm_axe_loc35R/ddm_axe_monitor2_loc35R.txt') as ddm_axe_monitor2:
s_generalites_bottom_axe_loc35R= Scrollbar(generalites_bottom)
T_generalites_bottom_axe_loc35R= Text(generalites_bottom,bg='powder blue',width=450,height=350,font=('arial',14,'bold'))
s_generalites_bottom_axe_loc35R.pack(side=RIGHT, fill=Y)
T_generalites_bottom_axe_loc35R.pack(side=LEFT, fill=Y)
s_generalites_bottom_axe_loc35R.config(command=T_generalites_bottom_axe_loc35R.yview)
T_generalites_bottom_axe_loc35R.config(yscrollcommand=s_generalites_bottom_axe_loc35R.set)
while True:
line1 = ddm_axe_monitor1.readline()
if len(line1) == 0:
break
line1 = line1.strip().split()
line2 = ddm_axe_monitor2.readline()
line2 = line2.strip().split()
T_generalites_bottom_axe_loc35R.insert(END, f'{line1[0]:15}\t {line1[1]:10}\t\t {line2[1]:10}\n')
T_generalites_bottom_axe_loc35R.after(1000, update) the above python code is inspired from the following code :
def update():
with open("htfl.txt","r") as f:
data = f.read()
T.insert(END,data)
T.after(1000, update) the update of the content of the Text was actually done but only once time and not in a continuous and multiple times
can you help me please
Posts: 536
Threads: 0
Joined: Feb 2018
Nov-19-2018, 09:31 PM
(This post was last modified: Nov-19-2018, 09:31 PM by woooee.)
Quote:the update of the content of the Text was actually done but only once time and not in a continuous and multiple times
Your after() calls a function named update (and it is only called once). Please post your update() function
T_generalites_bottom_axe_loc35R.after(1000, update)
Posts: 126
Threads: 29
Joined: Aug 2018
Nov-20-2018, 09:35 AM
(This post was last modified: Nov-20-2018, 09:35 AM by atlass218.)
sorry I rectfie the function code
def affichage_ddm_axe_loc35R_update ():
with open('archives/ILS_35R/loc35R/releves_mesure_loc35R/ddm_axe_loc35R/ddm_axe_monitor1_loc35R.txt') as ddm_axe_monitor1, open('archives/ILS_35R/loc35R/releves_mesure_loc35R/ddm_axe_loc35R/ddm_axe_monitor2_loc35R.txt') as ddm_axe_monitor2:
s_generalites_bottom_axe_loc35R= Scrollbar(generalites_bottom)
T_generalites_bottom_axe_loc35R= Text(generalites_bottom,bg='powder blue',width=450,height=350,font=('arial',14,'bold'))
s_generalites_bottom_axe_loc35R.pack(side=RIGHT, fill=Y)
T_generalites_bottom_axe_loc35R.pack(side=LEFT, fill=Y)
s_generalites_bottom_axe_loc35R.config(command=T_generalites_bottom_axe_loc35R.yview)
T_generalites_bottom_axe_loc35R.config(yscrollcommand=s_generalites_bottom_axe_loc35R.set)
while True:
line1 = ddm_axe_monitor1.readline()
if len(line1) == 0:
break
line1 = line1.strip().split()
line2 = ddm_axe_monitor2.readline()
line2 = line2.strip().split()
T_generalites_bottom_axe_loc35R.insert(END, f'{line1[0]:15}\t {line1[1]:10}\t\t {line2[1]:10}\n')
T_generalites_bottom_axe_loc35R.after(1000, affichage_ddm_axe_loc35R_update) and there is the code to call function and update mode :
affichage_ddm_axe_loc35R_update ()
Posts: 126
Threads: 29
Joined: Aug 2018
up
need help to resolve this problem
thanks
Posts: 126
Threads: 29
Joined: Aug 2018
Nov-26-2018, 01:51 AM
(This post was last modified: Nov-26-2018, 01:51 AM by atlass218.)
there is the detailed 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()
#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() thanks for help
Posts: 29
Threads: 0
Joined: Jul 2018
It's not a good idea repeatedly create widget s and T in the affichage_update(). I don't know what it will cause but remove them (line 44~50) out can solve the update problem.
Posts: 126
Threads: 29
Joined: Aug 2018
Nov-27-2018, 06:58 AM
(This post was last modified: Nov-27-2018, 06:58 AM by atlass218.)
I remove lines 44 to 50 but the problem of the update is not solved
Posts: 29
Threads: 0
Joined: Jul 2018
This one works for me on Windows Vista, Python 3.4
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()
file1 = 'temp1.txt'
file2 = 'temp2.txt'
#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(file1, "r")
text1 = mon_fichier1.read()
mon_fichier1.close()
textInsert1=str(archive_monitoring["date"])+"\t" +str(archive_monitoring["releves_mesure1"])+"\n"
fileW1 = open(file1, "w")
fileW1.write(textInsert1 + text1)
fileW1.close()
if (ent_releves2.get() !="" ) :
mon_fichier2 = open(file2, "r")
text2 = mon_fichier2.read()
mon_fichier2.close()
textInsert2=str(archive_monitoring["date"])+"\t" +str(archive_monitoring["releves_mesure2"])+"\n"
fileW2 = open(file2, "w")
fileW2.write(textInsert2 + text2)
fileW2.close()
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')
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)
def affichage_update():
with open(file1,"r") as monitor1, open(file2,"r") as monitor2:
T.delete('1.0', 'end')
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.insert(END, '{:15}\t {:10}\t\t {:10}\n'.format(line1[0], line1[1], line2[1]))
#T.update_idletasks()
T.after(500,affichage_update)
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=Label(generalites_top,text='{:15}'.format(head_axe_loc35L[0]),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=Label(generalites_top,text='{:10}'.format(head_axe_loc35L[1]),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=Label(generalites_top,text='{:10}'.format(head_axe_loc35L[2]), bg='powder blue',font=('arial',12,'bold'))
lb_monitor2.pack(padx=70, side=LEFT)
affichage_update()
container.pack(expand=1, fill='both', padx=5, pady=5)
root.mainloop() Replace file1 and file2 with your own
Posts: 126
Threads: 29
Joined: Aug 2018
Nov-27-2018, 04:28 PM
(This post was last modified: Nov-27-2018, 04:29 PM by atlass218.)
I test the code with my personnel files it's OK but the head is not shown at the top
the code of the head is :
head_axe_loc35L = ['Date', 'Monitor 1', 'Monitor 2']
lb_date=Label(generalites_top,text='{:15}'.format(head_axe_loc35L[0]),bg='powder blue',font=('arial',12,'bold'))
lb_date.pack(side=LEFT,padx=5,anchor=NW)
lb_monitor1=Label(generalites_top,text='{:10}'.format(head_axe_loc35L[1]),bg='powder blue',font=('arial',12,'bold'))
lb_monitor1.pack( side=LEFT)
lb_monitor2=Label(generalites_top,text='{:10}'.format(head_axe_loc35L[2]), bg='powder blue',font=('arial',12,'bold'))
lb_monitor2.pack(padx=70, side=LEFT) I check some possibilities but it doesn't appear, I don't knew why?
Posts: 29
Threads: 0
Joined: Jul 2018
The pack manager is a sequence-related procedure, which means first packed widget always located first. Also, during the debugging, use different background color may help on finding the problem.
Because of the continuously update of the whole text region, the Scrollbar becomes useless. You may consider move it into archiver().
container=ttk.Notebook(root,width=450,height=350)
monitoring=Frame(container,bg='yellow')
container.add(monitoring,text='monitor data')
releves=Frame(container,bg='blue')
container.add(releves,text='releves')
generalites_top=Frame(releves,bg='red')
generalites_top.pack(side=TOP, fill=X)
s= Scrollbar(releves)
s.pack(side=RIGHT, fill=Y)
T= Text(releves, bg='yellow', font=('arial',14,'bold'), pady=25)
T.pack(side=LEFT, fill=BOTH)
s.config(command=T.yview)
T.config(yscrollcommand=s.set)
|