Afficher une valeur en temps réel avec tkinter
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:
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() |