Je suis nouveau sur Python et j'essaye d'écrire un programme qui affiche une image sur une interface basée sur un message UDP reçu. Alors que je peux faire les deux choses séparément, je ne peux pas le faire fonctionner ensemble. La raison est simple, la boucle while de l'écouteur UDP n'autorise pas la boucle principale de tkinter et je n'arrive pas à trouver un moyen de la faire fonctionner. Je ne suis pas sûr de l'image "supprimer" le côté du code.Afficher l'image basée sur le message UDP
Pouvez-vous m'aider à trouver la solution?
Vous ne savez pas si c'est important, mais cela fonctionne sur un Raspberry Pi.
Voici le code: d'importation tkinter * socket d'importation
root = Tk()
canvas = Canvas(root)
canvas.pack()
UDP_PORT = 11000
UDP_IP = ""
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((UDP_IP, UDP_PORT))
photo1 = PhotoImage(file="test.gif")
photo2 = PhotoImage(file="ant.gif")
canvas.create_image(25, 25, image=photo1)
while True:
data, addr = sock.recvfrom(1024)
if data.decode() == "on":
canvas.create_image(100, 125, image=photo2)
elif data.decode() == "off":
canvas.delete(photo2)
root.mainloop()
Merci beaucoup. Vince.
Merci beaucoup pour la solution. Cela fonctionne très bien maintenant avec des threads. Je viens de modifier votre solution pour ajouter les deux Imports manquants (mon mauvais, ils étaient hors de la section de code sur mon email original.) – MadeByVince
Juste une dernière chose ... Le côté "canvas.delete" ne fonctionne pas. ajouter l'image mais ne peut pas l'enlever. Une idée? Merci – MadeByVince