Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

probleme QT4/python chat

1 réponse
Avatar
mimou
Bonjour,
Mon code serveur/multiclient fonctionnait parfaitement avant que je
l'integre dans l'interface QT4 mais apr=E8s C'est le desastre totale.
J'etais oblig=E9e d'eliminer les thread et de mettre un simple client et
malgr=E8s =E7a:
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=E9 par dos).
Le programme est r=E9alis=E9 =E0 l'aide de python2.5.
Le probleme est lorsque j'execute le programme l'interface ce bloque
(apr=E8s l'appuie sur le bouton connexion) .
J'ai cherch=E9 mais j'ai pas trouv=E9 la solution.

voici le code:
Code:

def chat(self):

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

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

mySocket =3D 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 =3D mySocket.accept()
c=3D time.strftime('%A %c')
client=3D "Connexion au port" + str(adresse[1]) + " a " + c
self.envoies.append(client)
donneesRecues =3D connexion.recv(8192)
t=3Dtime.strftime("%H:%M:%S")
self.envoies.append(" Donnees Recues " +t+ " > "+
donneesRecues)
rep =3D self.chat()
connexion.send(rep)

Quand j'ai cherch=E9 sur internet j'ai trouv=E9 qu'il existe des Qthread
mais j'ai pas su ni comment les utilis=E9es ni =E0 quoi servent.
Merci

1 réponse

Avatar
Alex Marandon
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 :-)