probleme QT4/python chat

Le
mimou
Bonjour,
Mon code serveur/multiclient fonctionnait parfaitement avant que je
l'integre dans l'interface QT4 mais après C'est le desastre totale.
J'etais obligée d'eliminer les thread et de mettre un simple client et
malgrès ça:
L'interface QT4 (de serveur que j'ai faite) contenant un editText et
lineText un bouton envoyer: permettant le transfert de donnees entre
un serveur un des clients(executé par dos).
Le programme est réalisé à l'aide de python2.5.
Le probleme est lorsque j'execute le programme l'interface ce bloque
(après l'appuie sur le bouton connexion) .
J'ai cherché mais j'ai pas trouvé la solution.

voici le code:
Code:

def chat(self):

rep = self.chates.text()
self.envoies.append("Donnees Envoyees>"+rep)
self.chates.clear()
return rep

def conec(self):
HOST = self.adripes.text()
PORT = int(self.nipes.text())

mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

try:
mySocket.bind((HOST, PORT))
except socket.error:
self.envoies.setText("La liaison du socket a l'adresse
choisie a echoue.")
sys.exit()
while 1:
self.envoies.append("Serveur pret en attente de
requetes .")
mySocket.listen(5)
connexion, adresse = mySocket.accept()
c= time.strftime('%A %c')
client= "Connexion au port" + str(adresse[1]) + " a " + c
self.envoies.append(client)
donneesRecues = connexion.recv(8192)
t=time.strftime("%H:%M:%S")
self.envoies.append(" Donnees Recues " +t+ " > "+
donneesRecues)
rep = self.chat()
connexion.send(rep)

Quand j'ai cherché sur internet j'ai trouvé qu'il existe des Qthread
mais j'ai pas su ni comment les utilisées ni à quoi servent.
Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Alex Marandon
Le #6641021
mimou wrote:
Le probleme est lorsque j'execute le programme l'interface ce bloque
(après l'appuie sur le bouton connexion) .
J'ai cherché mais j'ai pas trouvé la solution.


Effectivement tu as une bouble infinie (while 1) dans ton code donc Qt
ne peut pas reprendre la main pour traiter les événements utilisateurs
(entrées au clavier, clics de souris).

Il existe deux approches pour répondre à ce problème. Comme tu l'as
trouvé toi-même, une de ces approches consiste à éxécuter les taches
bloquante dans un thread séparé. Qt contient une API complète pour
manipuler les threads mais Python également. Continue a te documenter tu
es sur la bonne voie :-)

Publicité
Poster une réponse
Anonyme