Posts: 126
Threads: 29
Joined: Aug 2018
Nov-04-2018, 07:35 AM
(This post was last modified: Nov-04-2018, 07:35 AM by atlass218.)
Hi;
I'm trying to display the contents of 02 text files in a Tkinter (Text) widget, but I didn'tt arrived.
File contents (loc1.txt):
Quote:21/06/18 -0.7
22/06/18 -0.5
06/07/18 -0.7
13/07/18 -0.6
20/07/18 -0.3
27/07/18 -0.5
10/08/18 -1.2
17/08/18 -0.5
24/08/18 -0.3
21/09/18 -0.2
28/09/18 -0.4
17/10/18 -0.1
Content of the second text file (loc2.txt):
Quote:21/06/18 -0.7
22/06/18 -0.5
06/07/18 -0.8
13/07/18 -0.7
20/07/18 -0.3
27/07/18 -0.7
10/08/18 -1.0
17/08/18 -0.5
24/08/18 -0.3
21/09/18 -0.2
28/09/18 -0.5
17/10/18 -0.3
Here is the code I made to display the contents of a text file:
sous_generalites=Frame(generalites,bg='powder blue')
sous_generalites.pack(side=BOTTOM)
s_generalites= Scrollbar(sous_generalites)
T_generalites= Text(sous_generalites,bg='powder blue',width=750,height=550,font=('arial',14,'bold'),padx=20)
s_generalites.pack(side=RIGHT, fill=Y)
T_generalites.pack(side=LEFT, fill=Y)
s_generalites.config(command=T_generalites.yview)
T_generalites.config(yscrollcommand=s_generalites.set)
filename =('archives/loc1.txt')
fichier = open(filename, "r")
content_generalites= fichier.read()
fichier.close()
T_generalites.insert(END, content_generalites) Each of the two files has two columns (the first column is the same for both files, it represents the date)
here is the image of the desired concept:
thanks or help
Posts: 12,038
Threads: 487
Joined: Sep 2016
Nov-04-2018, 09:40 AM
(This post was last modified: Nov-04-2018, 09:41 AM by Larz60+.)
this code:
filename =('archives/loc1.txt')
fichier = open(filename, "r")
content_generalites= fichier.read()
fichier.close()
T_generalites.insert(END, content_generalites) can be simplified to:
with open(filename, "r") as fichier:
for line in fichire:
T_generalites.insert(END, line.strip()) I don't see a second file, but just add a similar phrase for the second file
also, if you wish to intermingle data from both files, you can use:
with open(file1, 'r') as f1, open(file2, 'r') as f2:
...
Posts: 126
Threads: 29
Joined: Aug 2018
Nov-05-2018, 11:40 AM
(This post was last modified: Nov-05-2018, 11:40 AM by atlass218.)
hi;
you don't see the second files because i don't knew how to do for adding tne content of two files in the same widget 'TEXT'
I try this code but it doesn't work like I want
with open('data_monitor1_axe_loc35L.txt', "r") as fichier1,open('data_monitor2_axe_loc35L.txt', "r") as fichier2:
for line in fichier1:
T1_paned_f7_bottom_35L_left.insert(END, line.strip())
for line in fichier2:
T1_paned_f7_bottom_35L_left.insert(END, line.strip())
Posts: 12,038
Threads: 487
Joined: Sep 2016
Quote:but it doesn't work like I want
and that is?
Posts: 126
Threads: 29
Joined: Aug 2018
Nov-06-2018, 09:44 AM
(This post was last modified: Nov-06-2018, 09:44 AM by atlass218.)
I think that the problem I encountered was not well understood. for that I explain again to have a good idea about the problem : there are two text files that I want to integrate into a widgte (TEXT)
the content of two files (loc2.txt,loc2.txt)
loc1.txt:
Quote:21/06/18 -0.7
22/06/18 -0.5
06/07/18 -0.7
13/07/18 -0.6
20/07/18 -0.3
27/07/18 -0.5
10/08/18 -1.2
17/08/18 -0.5
24/08/18 -0.3
21/09/18 -0.2
28/09/18 -0.4
17/10/18 -0.1
loc2.txt:
Quote:21/06/18 -0.7
22/06/18 -0.5
06/07/18 -0.8
13/07/18 -0.7
20/07/18 -0.3
27/07/18 -0.7
10/08/18 -1.0
17/08/18 -0.5
24/08/18 -0.3
21/09/18 -0.2
28/09/18 -0.5
17/10/18 -0.3
the first column of two txt files(loc1.txt and loc2.txt)is the same (It describes date)
I want to display the contents of these two files in a widget (TEXT) in this way:
* the first column displayed in the widget (TEXT) would be the column of the date ( which is already the first common column for the two text files loc1.txt, and loc2.txt)
* the second column displayed in the widget TEXT would be the second column of the text file (loc1.txt)
* the third column displayed in the widget TEXT would be the second column of the text file (loc2.txt)
here is the image of the desired concept:
currently, I can only display the contents of a single text file in the widget by this code :
from tkinter import *
import tkinter.ttk as ttk
from tkinter.ttk import Notebook
container=Tk()
container.geometry('450x350')
generalites=Frame(container,bg='powder blue')
generalites.pack(side=BOTTOM)
s_generalites= Scrollbar(generalites)
T_generalites= Text(generalites,bg='powder blue',width=350,height=350)
s_generalites.pack(side=RIGHT, fill=Y)
T_generalites.pack(side=LEFT, fill=Y)
s_generalites.config(command=T_generalites.yview)
T_generalites.config(yscrollcommand=s_generalites.set)
filename =('loc1.txt')
fichier = open(filename, "r")
content_generalites= fichier.read()
fichier.close()
T_generalites.insert(END, content_generalites)
container.mainloop() I hope that I have successfully explained the problem
Posts: 12,038
Threads: 487
Joined: Sep 2016
Nov-06-2018, 01:14 PM
(This post was last modified: Nov-06-2018, 01:20 PM by Larz60+.)
import os
# make sure in code directory
os.chdir(os.path.dirname(__file__))
with open('loc1.txt') as loc1, open('loc2.txt') as loc2:
head = ['Date', 'Value 1', 'Value2']
print(f'{head[0]:15} {head[1]:10} {head[2]:10}')
while True:
line1 = loc1.readline()
if len(line1) == 0:
break
line1 = line1.strip().split()
line2 = loc2.readline()
line2 = line2.strip().split()
print(f'{line1[0]:15} {line1[1]:10} {line2[1]:10}') results:
Output: Date Value 1 Value2
21/06/18 -0.7 -0.7
22/06/18 -0.5 -0.5
06/07/18 -0.7 -0.8
13/07/18 -0.6 -0.7
20/07/18 -0.3 -0.3
27/07/18 -0.5 -0.7
10/08/18 -1.2 -1.0
17/08/18 -0.5 -0.5
24/08/18 -0.3 -0.3
21/09/18 -0.2 -0.2
28/09/18 -0.4 -0.5
17/10/18 -0.1 -0.3
you can add the gui code to insert into your widget
This code uses f-string (python 3.6 and newer)
Posts: 126
Threads: 29
Joined: Aug 2018
I try to put this code in widget tkinter but i have problem
there is my code :
import os
from tkinter import *
root=Tk()
root.geometry('450x350')
# make sure in code directory
os.chdir(os.path.dirname(__file__))
with open('archives/ILS_35L/loc35L/loc1.txt') as loc1, open('archives/ILS_35L/loc35L/loc2.txt') as loc2:
head = ['Date', 'Monitor 1', 'Monitor 2']
lb_date=Label(root,text=f'{head[0]:15}',bg='powder blue')
lb_date.place(x=10,y=30)
lb_monitor1=Label(root,text=f'{head[1]:10}',bg='powder blue')
lb_monitor1.place(x=60,y=30)
lb_monitor2=Label(root,text=f'{head[2]:10}',bg='powder blue')
lb_monitor1.place(x=120,y=30)
# lb=Label(root, text=f'{head[0]:15}{head[1]:10}{head[2]:10}')
# lb.pack()
generalites=Frame(root,bg='powder blue')
generalites.pack(side=BOTTOM)
s_generalites= Scrollbar(generalites)
T_generalites= Text(generalites,bg='powder blue',width=350,height=350)
s_generalites.pack(side=RIGHT, fill=Y)
T_generalites.pack(side=LEFT, fill=Y)
s_generalites.config(command=T_generalites.yview)
T_generalites.config(yscrollcommand=s_generalites.set)
while True:
line1 = loc1.readline()
if len(line1) == 0:
break
line1 = line1.strip().split()
line2 = loc2.readline()
line2 = line2.strip().split()
content_generalites=f'{line1[0]:15}{line1[1]:10}{line2[1]:10}'
T_generalites.insert(END, content_generalites)
root.mainloop()
Posts: 3,458
Threads: 101
Joined: Sep 2016
(Nov-06-2018, 08:55 PM)atlass218 Wrote: but i have problem Is there an error? What problem are you having, and why do you want us to guess what that problem is?
Posts: 126
Threads: 29
Joined: Aug 2018
Nov-07-2018, 10:59 AM
(This post was last modified: Nov-07-2018, 10:59 AM by atlass218.)
The code indicates by Larz60 + works perfectly in console, so I tried to modify it so that it gives me the same result with widget tkinter (TEXT with scrolling)
with my last code I have this picture :
I wish to correct my code to have in TEXT widget of tkinter (python 3) as this result :
thanks for help
Posts: 12,038
Threads: 487
Joined: Sep 2016
Nov-07-2018, 03:36 PM
(This post was last modified: Nov-07-2018, 03:38 PM by Larz60+.)
Try:
content_generalites = f'{line1[0]:15} {line1[1]:10} {line2[1]:10}'.strip() or better, remove that line altogether and replace next with:
T_generalites.insert(END, f'{line1[0]:15} {line1[1]:10} {line2[1]:10}'.strip())
|