Problème affichage avec Tkinter

Ce programme a pour but d’afficher les températures de plusieurs sondes en direct sur un écran.
Lorsque je lance le programme, la fenêtre affiche bien la bonne température mais elle ne varie pas, elle garde la valeur du début, j’ai essayé plusieurs choses pour remédié au problème mais rien n’y fait

#!/usr/bin/python
#!/usr/bin/env python
# -*- coding: utf-8 -*-


import Tkinter 
import Tix 
import ScrolledText 
import tkColorChooser 
import tkCommonDialog 
import tkFileDialog 
import tkFont 
import tkMessageBox 
import tkSimpleDialog

import Tkinter as Tk 
from PIL import Image, ImageTk 
from Tkinter import Tk, Canvas
import PIL



from Tkinter import * 
import os
from time import sleep
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)
GPIO.setup(22,GPIO.OUT)

import time
import datetime
import RPi.GPIO as gpio


GPIO.output(22,GPIO.LOW)

root = Tk()
ligne1 = 90
ligne2 = 60
ligne3 = 30
temperature1 = 0
n = 450-(10/3)*temperature1
#canvas = Canvas(root, background="white", width=1024, height=600)

def affiche ():

    canvas = Canvas(root, background="white", width=1024, height=600)

    canvas.create_rectangle((50,50),(100,450), fill="white")

    image = PIL.Image.open("gradient.png")  
    photo = ImageTk.PhotoImage(image)  
    canvas.create_image(76,250, image=photo) 
    canvas.pack()  
    n = 450-(10/3)*temperature1
    canvas.create_rectangle((50,50),(100,n), fill="white")


    canvas.create_line((40,150), (100,150))
    canvas.create_line((40,250), (100,250))
    canvas.create_line((40,350), (100,350))
    canvas.create_text(40,160, text=ligne1)
    canvas.create_text(40,260, text=ligne2)
    canvas.create_text(40,360, text=ligne3)
    root.columnconfigure(1, weight=1)
    canvas.grid(sticky="ew", column=1)
#    root.after(1000,affiche)
#    root.quit()
    root.mainloop()
    time.sleep(1)
#    root.idle()
#    root.destroy()



# define a function called morsecode
def morsecode ():
    #Dot Dot Dot
    GPIO.output(22,GPIO.HIGH)
    sleep(.1)
    GPIO.output(22,GPIO.LOW)
    sleep(.1)
    GPIO.output(22,GPIO.HIGH)
    sleep(.1)
    GPIO.output(22,GPIO.LOW)
    sleep(.1)
    GPIO.output(22,GPIO.HIGH)
    sleep(.1)
    
    #Dash Dash Dash
    GPIO.output(22,GPIO.LOW)
    sleep(.2)
    GPIO.output(22,GPIO.HIGH)
    sleep(.2)
    GPIO.output(22,GPIO.LOW)
    sleep(.2)
    GPIO.output(22,GPIO.HIGH)
    sleep(.2)
    GPIO.output(22,GPIO.LOW)
    sleep(.2)
    GPIO.output(22,GPIO.HIGH)
    sleep(.2)
    GPIO.output(22,GPIO.LOW)
    sleep(.2)
    #Dot Dot Dot
    GPIO.output(22,GPIO.HIGH)
    sleep(.1)
    GPIO.output(22,GPIO.LOW)
    sleep(.1)
    GPIO.output(22,GPIO.HIGH)
    sleep(.1)
    GPIO.output(22,GPIO.LOW)
    sleep(.1)
    GPIO.output(22,GPIO.HIGH)
    sleep(.1)
    GPIO.output(22,GPIO.LOW)
    sleep(.7)
    return
os.system('clear')




def lireFichier (emplacement) :
    fichTemp = open(emplacement)
    contenu = fichTemp.read()
    fichTemp.close()
    return contenu

def recupTemp (contenuFich) :
    secondeLigne = contenuFich.split("\n")[1]
    temperatureData = secondeLigne.split(" ")[9]
    temperature = float(temperatureData[2:])
    temperature = temperature / 1000
    return temperature
def sauvegarde (temperature, date, emplacement) :
    fichierSauvegarde = open(emplacement, "a")
    fichierSauvegarde.write(str(date)+"   ")
    fichierSauvegarde.write(str(temperature)+'\r\n')
    fichierSauvegarde.close()



i1 = 0
valeur = 2
while ( i1 < 100 ) :
        date = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        contenuFich1 = lireFichier("/sys/bus/w1/devices/28-03176084f9ff/w1_slave")
        contenuFich2 = lireFichier("/sys/bus/w1/devices/28-05176037e6ff/w1_slave")       
        contenuFich3 = lireFichier("/sys/bus/w1/devices/28-03176041edff/w1_slave")





        temperature1 = recupTemp (contenuFich1)
        temperature2 = recupTemp (contenuFich2)
        temperature3 = recupTemp (contenuFich3)
        temp1 = 'Sonde 1 =' , temperature1
        temp2 = 'Sonde 2 =' , temperature2
        temp3 = 'Sonde 3 =' , temperature3



        sauvegarde(temp1, date, "/home/pi/Bureau/Temperature.txt")
        sauvegarde(temp2, date, "/home/pi/Bureau/Temperature.txt")
        sauvegarde(temp3, date, "/home/pi/Bureau/Temperature.txt")



    t = 40
    t1 = 60
    if temperature1 > t or temperature2 > t or temperature3 > t:

                if temperature1 > t1 or temperature2 > t1 or temperature3 > t1:
                        GPIO.output(22,GPIO.HIGH)
                else:
                        morsecode ()
                        time.sleep(2)
                        GPIO.output(22,GPIO.LOW)
        print "Temperature Capteur #1 : " ,
       print temperature1
        print "Temperature Capteur #2 : " ,
        print temperature2
        print "Temperature Capteur #3 : " ,
        print temperature3
    affiche()
#        root.columnconfigure(1, weight=1)
#        canvas.grid(sticky="ew", column=1)

    


        time.sleep(0.001)
        valeur = valeur + 2
        i1 = 1

Bonjour,

Et c’est bon dans le fichier ?

oui, ce fichier la c’est l’endroit où est enregistrer les valeur , une mémoire en quelque sorte.

Les données du fichier sont elles bonnes ? Si elles changent dans le fichier, c’est que c’est du coté de la partie affichage qu’il faut regarder, si elles ne changent pas dans le fichier, c’est du coté programme principal.

A+

Les valeurs s’arrete lorsque l’affichage s’arrête , le programme se bloque dans la boucle de l’affichage et n’en sort pas

Bonjour,

Je ne suis pas assez compétent pour déboguer ce prog.
Mais je pense que ce site devrait aiguiller http://fsincere.free.fr/isn/python/cours_python_tkinter.php

Bon courage
@++

merci , j’ai finalement trouvé la solution