class ResponseDialog(QtGui.QDialog): def __init__(self, parent): super(ResponseDialog, self).__init__(parent) self.buttonBox = QtGui.QDialogButtonBox(self) self.buttonBox.setOrientation(QtCore.Qt.Horizontal) #self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok) self.buttonBox.addButton(QPushButton("Responder", self.buttonBox), QDialogButtonBox.AcceptRole) self.buttonBox.addButton(QPushButton("Desertar", self.buttonBox), QDialogButtonBox.RejectRole) self.buttonBox.accepted.connect(self.accepted) self.buttonBox.rejected.connect(self.rejected) self.respuesta = QtGui.QLineEdit(self) self.respuestaTimer = TimerWidget(10, self) self.respuestaTimer.timeout.connect(self.respuestaTimerTimedOut) self.respuestaTimer.show() self.verticalLayout = QtGui.QVBoxLayout(self) self.verticalLayout.addWidget(self.respuesta) self.verticalLayout.addWidget(self.respuestaTimer) self.verticalLayout.addWidget(self.buttonBox) self.setWindowTitle('Respuesta') def respuestaTimerTimedOut(self): self.reject() def accepted(self): self.accept() def rejected(self): self.reject()
def __init__(self, parent, prolog, pregunta, respuesta, preguntaNum): super(QuestionDialog, self).__init__(parent) self.respuesta = respuesta.lower() self.prolog = prolog self.preguntaNum = preguntaNum print self.respuesta #self.setWindowFlags(QtCore.Qt.FramelessWindowHint) #self.buttonBox = QtGui.QDialogButtonBox(self) #self.buttonBox.setOrientation(QtCore.Qt.Horizontal) #self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok) self.btnRespuesta = QtGui.QPushButton(self) self.btnRespuesta.setText('Responder') self.btnRespuesta.clicked.connect(self.btnRespuestaClicked) self.textBrowser = QtGui.QTextBrowser(self) self.textBrowser.setStyleSheet('background-color: blue; color: white') self.textBrowser.setText(pregunta) self.respuestaTimer = TimerWidget(30, self) self.respuestaTimer.timeout.connect(self.respuestaTimerTimedOut) self.respuestaTimer.show() self.verticalLayout = QtGui.QVBoxLayout(self) self.verticalLayout.addWidget(self.textBrowser) self.verticalLayout.addWidget(self.respuestaTimer) self.verticalLayout.addWidget(self.btnRespuesta) #self.plSolver = PLSolver(prolog, preguntaNum, 5) #self.plSolver.finished.connect(self.maquinaResponded) #self.plSolver.start() self.ganador = None self.malaRespuesta = [] self.respondiendo = False self.respuestaTimedOut = False QTimer.singleShot(5000, self.performPLQuery)
class QuestionDialog(QtGui.QDialog): def __init__(self, parent, prolog, pregunta, respuesta, preguntaNum): super(QuestionDialog, self).__init__(parent) self.respuesta = respuesta.lower() self.prolog = prolog self.preguntaNum = preguntaNum print self.respuesta #self.setWindowFlags(QtCore.Qt.FramelessWindowHint) #self.buttonBox = QtGui.QDialogButtonBox(self) #self.buttonBox.setOrientation(QtCore.Qt.Horizontal) #self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok) self.btnRespuesta = QtGui.QPushButton(self) self.btnRespuesta.setText('Responder') self.btnRespuesta.clicked.connect(self.btnRespuestaClicked) self.textBrowser = QtGui.QTextBrowser(self) self.textBrowser.setStyleSheet('background-color: blue; color: white') self.textBrowser.setText(pregunta) self.respuestaTimer = TimerWidget(30, self) self.respuestaTimer.timeout.connect(self.respuestaTimerTimedOut) self.respuestaTimer.show() self.verticalLayout = QtGui.QVBoxLayout(self) self.verticalLayout.addWidget(self.textBrowser) self.verticalLayout.addWidget(self.respuestaTimer) self.verticalLayout.addWidget(self.btnRespuesta) #self.plSolver = PLSolver(prolog, preguntaNum, 5) #self.plSolver.finished.connect(self.maquinaResponded) #self.plSolver.start() self.ganador = None self.malaRespuesta = [] self.respondiendo = False self.respuestaTimedOut = False QTimer.singleShot(5000, self.performPLQuery) def respuestaTimerTimedOut(self): self.respuestaTimedOut = True if not self.respondiendo: self.accept() def performPLQuery(self): while (self.respondiendo): QTimer.singleShot(500, self.performPLQuery) return if not self.respuestaTimedOut and self.ganador is None: self.btnRespuesta.setEnabled(False) self.prolog.consult('pl/IA_Analysis.pl') print 'preguntaNum: ' + repr(self.preguntaNum) solucion = [s["X"] for s in self.prolog.query('pregunta_' + repr(self.preguntaNum) + '(X)', maxresult=1)] respuesta = solucion[0] print 'plSolver respuesta: ' + respuesta if self.respuesta == respuesta.lower(): self.ganador = 'maquina' QMessageBox.warning(self, 'Respuesta Acertada por Maquina', 'Respuesta Acertada por Maquina:\n' + respuesta, QMessageBox.Ok) self.accept() else: self.malaRespuesta.append('maquina') QMessageBox.warning(self, 'Respuesta NO Acertada por Maquina', 'Respuesta NO Acertada por Maquina:\n' + respuesta, QMessageBox.Ok) if len(self.malaRespuesta) > 1: self.accept() else: self.btnRespuesta.setEnabled(True) @pyqtSlot() def btnRespuestaClicked(self): self.respondiendo = True responseDialog = ResponseDialog(self) self.btnRespuesta.setEnabled(False) status = responseDialog.exec_() if status == QDialog.Accepted: print 'accepted' print responseDialog.respuesta.text() if self.respuesta == str(responseDialog.respuesta.text()).lower(): print 'gana jugador' self.ganador = 'jugador' QMessageBox.warning(self, 'Respuesta Acertada por Usted', 'Respuesta Acertada por Usted:\n' + str(responseDialog.respuesta.text()), QMessageBox.Ok) self.accept() else: self.malaRespuesta.append('jugador') else: print 'rejected' self.malaRespuesta.append('jugador') self.respondiendo = False if len(self.malaRespuesta) > 1: self.accept() if self.respuestaTimedOut: self.accept()