Bonjour, je suis débutant en Python, J'ai bouquiné une quinzaine d'heure avant de me lancer, mais j'ai de grosses lacunes.
Voici mon 1er programme:

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
import time
import sys
from Tkinter import *
from socket import *
 
IP = "0.0.0.0"
 
 
def find_tibbo():
    MYPORT = 65535
    donnee = 'X'
    print("sending X")
    time.sleep(.5)
    s = socket(AF_INET, SOCK_DGRAM)     #UDP with DGRAM
    s.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
    s.sendto(donnee, ('<broadcast>', MYPORT))
    data , addr = s.recvfrom(1024)
    print "RECV: ", data, " from:",addr #addr is a tuple
    IP_found = addr[0]                  # just IP, no port
    print IP_found
    s.close()
    return IP_found
 
Win = Tk()
 
Win.geometry('400x400+800+300')
Win.title('subrack controler')
 
 
Wintxt = Label(Win,text='Search for IP address').place(x=18,y=15)
Winbutton = Button(Win,text = 'Go',command = find_tibbo).place(x=200,y=10)
WinIP = Label(Win,text=IP).place(x=250,y=15)
 
 
Win.mainloop()
Alors voilà, il y a une grosse partie qui fonctionne (Python 2.7.3rc2 sur Raspberry Pi), une fenetre s'ouvre et j'affiche bien une adresse IP bidon (0.0.0.0) au départ. Quand je clique sur "GO" une fonction permet d'aller sur le réseau chercher l'adresse IP d'un module électronique qui réponds bien, par exemple:

>>>
sending X
RECV: A0.36.119.80.199/000001001/N**M/**/Herve //4 from: ('192.168.150.117', 65535)
192.168.150.117
>>>

Donc l'adresse IP est bien trouvée puisqu'imprimée.

Maintenant, et après avoir passé beaucoup de temps à trouver la solution, je n'arrive pas à changer l'adresse IP bidon de ma fenetre par la véritable adresse trouvée par ma fonction, après avoir cliqué "Go". (dans IP_found)
(Mes divers essais ne fonctionnaient pas, ou donnaient des choses... étranges)


Merci de votre aide
Hervé