Pages: 1
- Sujet précédent - QGIS: actualisation automatique du contenu du widget tkinter 'Text' - Sujet suivant
#1 Mon 26 November 2018 12:04
- atlass218
- Juste Inscrit !
- Date d'inscription: 26 Nov 2018
- Messages: 1
QGIS: actualisation automatique du contenu du widget tkinter 'Text'
bonjour;
je suis entrain de finaliser un petit projet. etj'ai rencontre un probleme d'actualisation du contenu du widget tkinter "Text" de mon application cree par python 3.6
le contenu du code est comme suit :
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}tt {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}tt {line2[1]:10}n') T.update_idletasks() T.after(500,affichage_update) container.pack(expand=1, fill='both', padx=5, pady=5) root.mainloop()
merci d'avance pour l'aide
Hors ligne
#2 Wed 28 November 2018 12:33
- JD
- Moderateur
- Date d'inscription: 8 Aug 2013
- Messages: 726
Re: QGIS: actualisation automatique du contenu du widget tkinter 'Text'
Bonjour,
sans répondre à la question car le peu d'éléments fournis (à part le code) ne le permet pas,
pourquoi passer par tkinter alors que qgis est interfacé à pyqt, quelque chose m'échappe.
Cordialement,
Hors ligne
#3 Wed 28 November 2018 12:41
Re: QGIS: actualisation automatique du contenu du widget tkinter 'Text'
Bonjour,
Dans votre post, nous ne nous faîtes pas part de votre message d'erreur.
Aussi, sous QGIS, c'est (py)Qt qui est utilisé pour modéliser des interfaces.
On importe les modules pyQt comme ceci, sous QGIS 3 :
Code:
from PyQt5.QtCore import * from PyQt5.QtGui import *
geodata au cerema et petits billets en géomatique
Hors ligne
Pages: 1
- Sujet précédent - QGIS: actualisation automatique du contenu du widget tkinter 'Text' - Sujet suivant