Bueno ya pude resolverlo, la manera de hacerlo en QT es usando el sistema de SIGNAL y SLOTS, emitiendo una Señal en el thread cuando llega el mensaje, para que el parent thread lo gestione, aqui va el codigo del client.py por si a alguien le sirve:
Código Python:
Ver originalfrom PySide import QtGui, QtCore
import socket, thread, sys
socket_cliente = socket.socket()
socket_cliente.connect(('', 9090))
class Window(QtGui.QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.socket()
self.browser = QtGui.QTextBrowser()
self.browser.backwardAvailable
self.textEdit = QtGui.QTextEdit()
self.textEdit.setMaximumSize(QtCore.QSize(400, 60))
self.connect(self.browser, QtCore.SIGNAL("returnPressed()"), self.enviar_mensaje)
self.connect(self, QtCore.SIGNAL("agregarMensaje(QString)"), self.imprime)
enviarB = QtGui.QPushButton("Enviar")
enviarB.setMaximumSize(QtCore.QSize(400, 60))
enviarB.clicked.connect(self.enviar_mensaje)
layoutINlayout = QtGui.QHBoxLayout()
layoutINlayout.addWidget(self.textEdit)
layoutINlayout.addWidget(enviarB)
widget = QtGui.QWidget()
self.setCentralWidget(widget)
self.layout = QtGui.QVBoxLayout()
self.layout.addWidget(self.browser)
mainWindow = QtGui.QVBoxLayout()
mainWindow.addLayout(self.layout)
mainWindow.addLayout(layoutINlayout)
widget.setLayout(mainWindow)
self.setWindowFlags(QtCore.Qt.WindowTitleHint)
def imprime(self, mensaje):
self.add_mensaje(mensaje)
def enviar_mensaje(self):
mensaje = self.textEdit.toPlainText()
socket_cliente.send(mensaje)
def add_mensaje(self, mensaje):
self.browser.setText(mensaje)
def socket(self):
def loop():
while True:
print "Esperando mensajes"
mensaje = socket_cliente.recv(1000)
if mensaje:
self.emit(QtCore.SIGNAL("agregarMensaje(QString)"), mensaje)
thread.start_new_thread(loop, ())
app = QtGui.QApplication(sys.argv)
w = Window()
w.show()
app.exec_()