Hello, I tried to program a chat interface between a server and many clients. when I used Qthread this message apear when I execute my program file from DOS: QThread: Destroyed while thread is still running And stop the execution of the program because pythonw.exe has find a problem and must close... this is my code
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'interf_s.ui' # # Created: Tue Apr 29 12:55:58 2008 # by: PyQt4 UI code generator 4.3.3 # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui from PyQt4.QtCore import * from PyQt4.QtGui import * import socket, sys, threading import time import locale class Thread(QThread): #lock = QReadWriteLock() def __init__(self, host, port): super(Thread, self).__init__() #self.socketId = socketId self.host = host self.port = port def run(self): HOST = self.host PORT = int(self.port) 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.") print "La liaison du socket a l'adresse choisie a echoue." sys.exit() while 1: #self.envoies.append("Serveur pret en attente de requetes .") print "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) print client donneesRecues = connexion.recv(8192) t=time.strftime("%H:%M:%S") #self.envoies.append(" Donnees Recues " +t+ " > "+ donneesRecues) rep = " Donnees Recues " +t+ " > "+ donneesRecues print rep #rep = self.chat() connexion.send(rep) #"Donnees Envoyees>"+rep class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(QtCore.QSize(QtCore.QRect(0,0,610,600).size()).expandedTo(MainWindow.minimumSizeHint())) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.gc = QtGui.QGroupBox(self.centralwidget) self.gc.setGeometry(QtCore.QRect(9,9,581,111)) self.gc.setObjectName("gc") self.adripes = QtGui.QLineEdit(self.gc) self.adripes.setGeometry(QtCore.QRect(110,30,301,20)) self.adripes.setObjectName("adripes") self.label = QtGui.QLabel(self.gc) self.label.setGeometry(QtCore.QRect(20,30,71,16)) self.label.setObjectName("label") self.label_2 = QtGui.QLabel(self.gc) self.label_2.setGeometry(QtCore.QRect(20,60,91,16)) self.label_2.setObjectName("label_2") self.nipes = QtGui.QLineEdit(self.gc) self.nipes.setGeometry(QtCore.QRect(110,60,301,20)) self.nipes.setObjectName("nipes") self.connectes = QtGui.QPushButton(self.gc) self.connectes.setGeometry(QtCore.QRect(470,70,91,23)) self.connectes.setObjectName("connectes") self.envoies = QtGui.QTextEdit(self.centralwidget) self.envoies.setGeometry(QtCore.QRect(10,150,256,271)) self.envoies.setObjectName("envoies") self.chates = QtGui.QLineEdit(self.centralwidget) self.chates.setGeometry(QtCore.QRect(10,450,256,31)) self.chates.setObjectName("chates") self.benves = QtGui.QPushButton(self.centralwidget) self.benves.setGeometry(QtCore.QRect(190,520,75,23)) self.benves.setObjectName("benves") self.gt = QtGui.QGroupBox(self.centralwidget) self.gt.setGeometry(QtCore.QRect(280,140,311,401)) self.gt.setObjectName("gt") self.tablees = QtGui.QTableWidget(self.gt) self.tablees.setGeometry(QtCore.QRect(20,40,281,181)) self.tablees.setObjectName("tablees") self.ajoues = QtGui.QPushButton(self.gt) self.ajoues.setGeometry(QtCore.QRect(210,280,75,23)) self.ajoues.setObjectName("ajoues") self.suppes = QtGui.QPushButton(self.gt) self.suppes.setGeometry(QtCore.QRect(210,330,75,23)) self.suppes.setObjectName("suppes") MainWindow.setCentralWidget(self.centralwidget) self.statusbar = QtGui.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.menubar = QtGui.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0,0,610,21)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.retranslateUi(MainWindow) QtCore.QObject.connect(self.ajoues,QtCore.SIGNAL("clicked()"),self.ajout) QtCore.QObject.connect(self.suppes,QtCore.SIGNAL("clicked()"),self.supprim) QtCore.QObject.connect(self.connectes,QtCore.SIGNAL("clicked()"),self.conec) QtCore.QObject.connect(self.benves,QtCore.SIGNAL("clicked()"),self.chat) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) self.gc.setTitle(QtGui.QApplication.translate("MainWindow", "Connexion :", None, QtGui.QApplication.UnicodeUTF8)) self.label.setText(QtGui.QApplication.translate("MainWindow", "Adresse IP :", None, QtGui.QApplication.UnicodeUTF8)) self.label_2.setText(QtGui.QApplication.translate("MainWindow", "Numero de port :", None, QtGui.QApplication.UnicodeUTF8)) self.connectes.setText(QtGui.QApplication.translate("MainWindow", "Connexion", None, QtGui.QApplication.UnicodeUTF8)) self.envoies.setHtml(QtGui.QApplication.translate("MainWindow", "<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n" "p, li { white-space: pre-wrap; }\n" "</style></head><body style=\" font-family:\'MS Shell Dlg 2\'; font-size:8.25pt; font-weight:400; font-style:normal;\">\n" "<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;\"></p></body></html>", None, QtGui.QApplication.UnicodeUTF8)) self.benves.setText(QtGui.QApplication.translate("MainWindow", "Envoyer", None, QtGui.QApplication.UnicodeUTF8)) self.gt.setTitle(QtGui.QApplication.translate("MainWindow", "Gestion commandes :", None, QtGui.QApplication.UnicodeUTF8)) self.tablees.clear() self.tablees.setColumnCount(2) self.tablees.setRowCount(3) headerItem = QtGui.QTableWidgetItem() headerItem.setText(QtGui.QApplication.translate("MainWindow", "Commande 1", None, QtGui.QApplication.UnicodeUTF8)) self.tablees.setVerticalHeaderItem(0,headerItem) headerItem1 = QtGui.QTableWidgetItem() headerItem1.setText(QtGui.QApplication.translate("MainWindow", "Commande 2", None, QtGui.QApplication.UnicodeUTF8)) self.tablees.setVerticalHeaderItem(1,headerItem1) headerItem2 = QtGui.QTableWidgetItem() headerItem2.setText(QtGui.QApplication.translate("MainWindow", "Commande 3", None, QtGui.QApplication.UnicodeUTF8)) self.tablees.setVerticalHeaderItem(2,headerItem2) headerItem3 = QtGui.QTableWidgetItem() headerItem3.setText(QtGui.QApplication.translate("MainWindow", "RequĂȘte", None, QtGui.QApplication.UnicodeUTF8)) self.tablees.setHorizontalHeaderItem(0,headerItem3) headerItem4 = QtGui.QTableWidgetItem() headerItem4.setText(QtGui.QApplication.translate("MainWindow", "Reponse", None, QtGui.QApplication.UnicodeUTF8)) self.tablees.setHorizontalHeaderItem(1,headerItem4) item = QtGui.QTableWidgetItem() item.setText(QtGui.QApplication.translate("MainWindow", "$ GPSCON", None, QtGui.QApplication.UnicodeUTF8)) self.tablees.setItem(0,0,item) item1 = QtGui.QTableWidgetItem() item1.setText(QtGui.QApplication.translate("MainWindow", "Bonjour", None, QtGui.QApplication.UnicodeUTF8)) self.tablees.setItem(0,1,item1) item2 = QtGui.QTableWidgetItem() item2.setText(QtGui.QApplication.translate("MainWindow", "$ GPSNMUN", None, QtGui.QApplication.UnicodeUTF8)) self.tablees.setItem(1,0,item2) item3 = QtGui.QTableWidgetItem() item3.setText(QtGui.QApplication.translate("MainWindow", "OK", None, QtGui.QApplication.UnicodeUTF8)) self.tablees.setItem(1,1,item3) item4 = QtGui.QTableWidgetItem() item4.setText(QtGui.QApplication.translate("MainWindow", "$ GPSACP", None, QtGui.QApplication.UnicodeUTF8)) self.tablees.setItem(2,0,item4) item5 = QtGui.QTableWidgetItem() item5.setText(QtGui.QApplication.translate("MainWindow", "Hello", None, QtGui.QApplication.UnicodeUTF8)) self.tablees.setItem(2,1,item5) self.ajoues.setText(QtGui.QApplication.translate("MainWindow", "Ajouter", None, QtGui.QApplication.UnicodeUTF8)) self.suppes.setText(QtGui.QApplication.translate("MainWindow", "Supprimer", None, QtGui.QApplication.UnicodeUTF8)) def ajout(self): self.tablees.insertRow(3) def supprim(self): self.tablees.removeRow(3) def chat(self): rep = self.chates.text() self.envoies.append("Donnees Envoyees>"+rep) self.chates.clear() return rep #self.envoies.append("Deconnexion de ", self.client_address) def conec(self): HOST = self.adripes.text() PORT = int(self.nipes.text()) thread = Thread(HOST, PORT) QtCore.QObject.connect(thread, SIGNAL("finished()"),thread, SLOT("deleteLater()")) thread.start() if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) MainWindow = QtGui.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_()) thank you -- View this message in context: http://www.nabble.com/-python-Qt4-a-problem-of-QThread-tp16993255p16993255.html Sent from the PyQt mailing list archive at Nabble.com. _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt