Python, pyqt4, ¿cómo enviar la impresión al cuadro de texto en la interfaz?
import?threading,time
clase?sy(QtGui.QWidget):
txt_signal?pyqtSignal(String )
def?__init__(self,parent=None):
self.app=QtGui.QApplication([])
super(sy,self) . __init__(padre)
self.txt=QtGui.QTextEdit()
lay=QtGui.QVBoxLayout()
self.txt_signal.connect(self. writeToTextbox ) ?
lay.addWidget(self.txt)
self.setLayout(lay)
def?main(self):
self.show()
self.app.exec_()
def? escribir(self,s):
self.txt_signal.emit( s )
@QtCore.pyqtSlot(str)?
def?writetoTextbox(self,text):?
self.txt.append(texto)< / p>
def?PrintSomething(stream):
time.sleep(3)
print('hello?world',file=stream,end="Sí. es ?una?prueba!")
if?__name__=='__main__':
s=sy()
t=threading.Thread(destino = PrintSomething,args=(s,)
t.start()
s.main() Puntos clave:
i.print(valor, .. ., sep=' ', end='\n', file=sys.stdout):
El parámetro del archivo determina dónde generar la salida, se puede usar cualquier objeto con un método write(self,s) Como este parámetro
La representación de cadena del parámetro de valor se usará como una salida única, dirigida al objeto de archivo
El parámetro final se usará como la segunda salida,
p>
No se puede acceder a la interfaz GUI dibujada por PyQt desde el hilo en segundo plano de la manera normal, por lo que se define un pyqtSignal, que genera un evento en el método de escritura cuando se llama al método de escritura desde el hilo en segundo plano.