probleme QT4/python chat

Le
mimou
Bonjour,
Mon code serveur/multiclient fonctionnait parfaitement avant que je
l'integre dans l'interface QT4 mais aprs C'est le desastre totale.
J'etais oblige d'eliminer les thread et de mettre un simple client et
malgrs 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 ralis l'aide de python2.5.
Le probleme est lorsque j'execute le programme l'interface ce bloque
(aprs 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 utilises ni quoi servent.
Merci
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