PyQt4 Espera no thread para entrada do usuário da GUI
Eu tenho uma classe de thread "MyThread" e meu aplicativo principal, que é simplesmente chamado de "Gui". Eu quero criar alguns objetos da classe thread, mas para este exemplo eu criei apenas um objeto. A classe de encadeamento faz algum trabalho e, em seguida, emite um sinal para a classe Gui, indicando que é necessária uma entrada do usuário (essa indicação, por enquanto, está simplesmente alterando o texto de um botão). Em seguida, o encadeamento deve aguardar a entrada do usuário (neste caso, clicar em um botão) e continuar fazendo o que está fazendo ...
from PyQt4 import QtGui, QtCore
class MyTrhead(QtCore.QThread):
trigger = QtCore.pyqtSignal(str)
def run(self):
print(self.currentThreadId())
for i in range(0,10):
print("working ")
self.trigger.emit("3 + {} = ?".format(i))
#### WAIT FOR RESULT
time.sleep(1)
class Gui(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(Gui, self).__init__(parent)
self.setupUi(self)
self.pushButton.clicked.connect(self.btn)
self.t1 = MyTrhead()
self.t1.trigger.connect(self.dispaly_message)
self.t1.start()
print("thread: {}".format(self.t1.isRunning()))
@QtCore.pyqtSlot(str)
def dispaly_message(self, mystr):
self.pushButton.setText(mystr)
def btn(self):
print("Return result to corresponding thread")
if "__main__" == __name__:
import sys
app = QtGui.QApplication(sys.argv)
m = Gui()
m.show()
sys.exit(app.exec_())
Como posso esperar (vários) threads por uma entrada do usuário?