Bonjour,

je viens de créer un client pour un chat en python et
quand je tente d'ouvrir le fichier python en double cliquant dessus rien de se passe.
mais quand je passe par F5 il marche correctement.
auriez-vous une réponse.

Cordialement,
Dbutant

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
83
84
85
86
87
88
89
 
from tkinter import *
import socket, sys, threading 
 
host = '127.0.0.1'
port = 50000
 
class ThreadReception(threading.Thread):
    """objet thread gérant la réception des messages"""
    def __init__(self, conn, widget= None):
        threading.Thread.__init__(self)
        self.connexion = conn           # réf. du socket de connexion
        self.widget = widget
 
    def run(self):
        while 1:
            message_recu = self.connexion.recv(1024)
            message_recu = str(message_recu,'LATIN1')+'\n'
            self.widget.insert(0.0,message_recu)
            if message_recu =='' or message_recu.upper() == "FIN":
                break
            # Le thread <réception> se termine ici.
            # On force la fermeture du thread <émission> :
        self.widget.insert(0.0,"Client arrêté. Connexion interrompue.")
        self.connexion.close()
 
 
class interface_client(Tk):
 
    def __init__(self):
        # création de la fenetre principale 
        self.root = Tk()
 
        self.frame = Frame(self.root, bg = 'grey')
 
        self.text1 = Text(self.frame,height = 10 ,width = 75)  #affichage
        self.scrollbar=Scrollbar(self.frame)
        self.text1.configure(yscrollcommand=(self.scrollbar, 'set'))
        self.scrollbar.configure(command=(self.text1, 'yview'))
 
        self.text2 = Entry(self.frame)  #ecriture
 
        self.nombre_de_connectes = Label(self.frame,height=1,width = 2,text= '0')    
 
        self.frame.pack()
        self.text1.grid()
        self.scrollbar.grid(row= 0, column= 1,sticky= N+S)
        self.text2.grid(row =1, sticky= E+W)
        self.nombre_de_connectes.grid(row= 1, column= 1)
 
        bouton= Button(self.frame, text = 'envoie', fg='red', command = self.envoi)
        bouton.grid(row= 2)
 
        #  evenement
        self.text2.bind('<Return>',self.envoi)
 
        # Programme principal - Établissement de la connexion :
        self.connexion = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        try:
            self.connexion.connect((host, port))
        except socket.error:
            print ("La connexion a échoué.")
            sys.exit()    
        print ("Connexion établie avec le serveur.")
 
        #methode associée
        self.recoi()# Programme principal - Établissement de la reception :
        self.root.mainloop()
 
 
 
    def recoi(self):   
        # Dialogue avec le serveur : on lance le thread pour gérer
        # indépendamment la réception des messages :
        th_R = ThreadReception(self.connexion, self.text1)
        th_R.start()
 
 
    def envoi(self,evt= 1):
        self.evt = evt
        a= self.text2.get()+'\n'
        b= self.text2.get()
        b= bytes(b,'LATIN1')
        self.connexion.send(b)
        self.text1.insert(0.0,a)
        self.text2.delete(0,END)
 
 
app= interface_client()