Bonjour,

j'utilise le programme suivant pour récupérer des données JSON sur un server, et je souhaite afficher une valeur spécifique (que j'appelle tata dans mon programme)qui va se mettre à jour toutes les secondes (je recois un JSON toutes les secondes). ci dessous le programme qui lit le nouveau JSON en boucle. Tkinter étant également une loop, je suis un peu perdu de la manière de procéder pour avoir un affichage correct. Je sais créer une fenetre et afficher une valeur avec tkinter, mais je ne sais pas ou placer mon programme pour que l'affichage soit correct ! par avance merci pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
 
#!/usr/bin/env python3
"""
Very simple HTTP server in python for logging requests
Usage::
    ./server.py [<port>]
"""
from http.server import BaseHTTPRequestHandler, HTTPServer
import logging
import json
import tkinter as Tk
 
tata = 0
 
class S(BaseHTTPRequestHandler):
    def _set_response(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
 
    def do_GET(self):
        logging.info("GET request,\nPath: %s\nHeaders:\n%s\n", str(self.path), str(self.headers))
        self._set_response()
        self.wfile.write("GET request for {}".format(self.path).encode('utf-8'))
 
    def do_POST(self):
        content_length = int(self.headers['Content-Length']) # <--- Gets the size of data
        post_data = self.rfile.read(content_length) # <--- Gets the data itself
 
        logging.info("POST request,\nPath: %s\nHeaders:\n%s\n\nBody:\n%s\n",
                str(self.path), str(self.headers), post_data.decode('utf-8'))
 
        self._set_response()
        self.wfile.write("POST request for {}".format(self.path).encode('utf-8'))
        #print(post_data)
        # print(type(post_data))
        # Decode UTF-8 bytes to Unicode, and convert single quotes
        # to double quotes to make it valid JSON
        my_json = post_data.decode('utf8').replace("'", '"')
 
        # Load the JSON to a Python list & dump it back out as formatted JSON
        titi = json.loads(my_json)
        # s = json.dumps(data, indent=4, sort_keys=True)
        # print(titi)
        # print(type(titi))
 
        toto = titi["eulers"]
        # print(toto)
        # print(type(toto))
 
        premier = toto[0]
        print(premier["yawLeftForearm"])
        tata = premier["yawLeftForearm"]
        root = Tk.Tk()
        lbl = Tk.Label(text=0)
        lbl.config(text=str(tata))
        root.update()
        lbl.pack()
        root.mainloop()
 
 
 
def run(server_class=HTTPServer, handler_class=S, port=8086):
    logging.basicConfig(level=logging.INFO)
    server_address = ('192.168.0.12', port)
    httpd = server_class(server_address, handler_class)
    logging.info('Starting httpd...\n')
    try:
 
        httpd.serve_forever()
    except KeyboardInterrupt:
        pass
    httpd.server_close()
    logging.info('Stopping httpd...\n')
 
if __name__ == '__main__':
    from sys import argv
 
    if len(argv) == 2:
        run(port=int(argv[1]))
    else:
        run()