def __init__(self, model): self.model = model self.frame = uic.loadUi('GUI/MainWindow.ui') self.world = VirtualWorld(self.frame) self.configFrame() self.configVirtualWorld() self.frame.show()
def __init__(self, model): self.model = model self.frame = uic.loadUi("GUI/MainWindow.ui") self.world = VirtualWorld(self.frame) self.configFrame() self.configVirtualWorld() self.frame.show()
class MainWindow: def __init__(self, model): self.model = model self.frame = uic.loadUi('GUI/MainWindow.ui') self.world = VirtualWorld(self.frame) self.configFrame() self.configVirtualWorld() self.frame.show() def configFrame(self): self.frame.virtualWorld = self.world # Init the table of inputs widget self.frame.tblWdgt_trainingList.setColumnCount(3) self.frame.tblWdgt_trainingList.setHorizontalHeaderLabels( ['Frase', 'Accion', 'Argumento']) self.frame.tblWdgt_trainingList.horizontalHeader( ).setStretchLastSection(True) self.frame.lnEdt_iterations.setValidator( QIntValidator(0, 1000, self.frame)) self.initEvents() def configVirtualWorld(self): self.world.setMinimumWidth(500) self.world.setMinimumHeight(600) self.world.setFocus() def initEvents(self): self.frame.btn_left.clicked.connect( partial(self.world.moveObj, objId="P1", direction='izquierda')) self.frame.btn_right.clicked.connect( partial(self.world.moveObj, objId="P1", direction='derecha')) self.frame.btn_up.clicked.connect( partial(self.world.moveObj, objId="P1", direction='arriba')) self.frame.btn_down.clicked.connect( partial(self.world.moveObj, objId="P1", direction='abajo')) self.frame.btn_grab.clicked.connect(self.world.grabObj) self.frame.btn_dance.clicked.connect(self.world.dance) self.frame.btn_insertObj.clicked.connect(self.insertObj) self.frame.btn_execSentence.clicked.connect(self.execSentence) self.frame.lnEdt_sentence_execute.returnPressed.connect( self.execSentence) self.frame.btn_clearLog.clicked.connect(self.frame.txtEdt_log.clear) self.frame.btn_addTrainInput.clicked.connect(self.addTrainInput) self.frame.lnEdt_sentence_train.returnPressed.connect( self.addTrainInput) self.frame.btn_train.clicked.connect(self.trainFromInputList) self.frame.btn_clear_train.clicked.connect(self.clearInputTable) def execSentence(self): sentence = self.frame.lnEdt_sentence_execute.text().lower() if (sentence is None) or (not sentence): sentence = "-" self.frame.txtEdt_log.append("<b>>></b> " + sentence) sentence = sentence.split() predictions = self.model.inputSentence(sentence, verbosity=2, learn=False) task = predictions[0] argument = predictions[1][:-6] if task == 'mover-event': self.frame.txtEdt_log.append(self.world.moveObj('P1', argument)) elif task == 'recoger-event': self.frame.txtEdt_log.append(self.world.grabObj()) elif task == 'bailar-event': self.frame.txtEdt_log.append(self.world.dance()) else: self.frame.txtEdt_log.append('<font color="Red">' 'P1: No se que hacer' '</font><br>') self.model.reset() def talk(self, speech=None): """ Displays a sentence in the log """ if (speech is None) or (not speech): speech = self.frame.lnEdt_speak.displayText() self.frame.lnEdt_speak.clear() self.frame.txtEdt_log.append('<font color="Green">' 'P1: ' + speech + '</font><br>') def addTrainInput(self): """ Adds an input to the list of inputs that will be used for training. """ sentence = self.frame.lnEdt_sentence_train.text() action = self.frame.cmbBx_action.currentText() if action == 'Mover arriba': action = 'mover-event' argument = 'arriba-event' elif action == 'Mover abajo': action = 'mover-event' argument = 'abajo-event' elif action == 'Mover izquierda': action = 'mover-event' argument = 'izquierda-event' elif action == 'Mover derecha': action = 'mover-event' argument = 'derecha-event' elif action == 'Hablar': action = 'hablar-event' argument = self.frame.lnEdt_argument.text() if argument == '': argument = 'nothing-event' elif action == 'Bailar': action = 'bailar-event' argument = 'nothing-event' elif action == 'Recoger': action = 'recoger-event' argument = 'nothing-event' else: action = 'nothing-event' argument = 'nothing-event' rowCount = self.frame.tblWdgt_trainingList.rowCount() self.frame.tblWdgt_trainingList.setRowCount(rowCount + 1) self.frame.tblWdgt_trainingList.setItem(rowCount, 0, QTableWidgetItem(sentence)) self.frame.tblWdgt_trainingList.setItem(rowCount, 1, QTableWidgetItem(action)) self.frame.tblWdgt_trainingList.setItem(rowCount, 2, QTableWidgetItem(argument)) self.frame.tblWdgt_trainingList.resizeColumnsToContents() def trainFromInputList(self): """ Gets the Input List from the tblWdgt_trainingList and starts training the model. """ trainingList = [] sourceTable = self.frame.tblWdgt_trainingList for row in xrange(sourceTable.rowCount()): sentence = sourceTable.item(row, 0).text().split() event = [ sourceTable.item(row, 1).text(), sourceTable.item(row, 2).text() ] trainingList.append((sentence, event)) iterations = int(self.frame.lnEdt_iterations.text()) self.frame.controlPanel.setEnabled(False) self.frame.statusBar().showMessage("Training in progress...") self.model.train(iterations, trainingData=trainingList, maxTime=-1, verbosity=1) self.frame.controlPanel.setEnabled(True) self.frame.statusBar().showMessage("Done!", 2000) def importInputList(self): """ Opens a file selection window to select the csv where the Inputs List is going to be imported from. """ fileData = QFileDialog.getOpenFileName(self.frame, "Import Input List", "", "Python Files (*.py)") trainingSet = imp.load_source('TrainingSet', fileData[0]) def clearInputTable(self): self.frame.tblWdgt_trainingList.clear() self.frame.tblWdgt_trainingList.setRowCount(0) self.frame.tblWdgt_trainingList.setHorizontalHeaderLabels( ['Frase', 'Accion', 'Argumento']) self.frame.tblWdgt_trainingList.horizontalHeader( ).setStretchLastSection(True) def insertObj(self): objType = self.frame.cmbBx_insertObj.currentText() self.world.insertObj(objType)
class MainWindow: def __init__(self, model): self.model = model self.frame = uic.loadUi("GUI/MainWindow.ui") self.world = VirtualWorld(self.frame) self.configFrame() self.configVirtualWorld() self.frame.show() def configFrame(self): self.frame.virtualWorld = self.world # Init the table of inputs widget self.frame.tblWdgt_trainingList.setColumnCount(3) self.frame.tblWdgt_trainingList.setHorizontalHeaderLabels(["Frase", "Accion", "Argumento"]) self.frame.tblWdgt_trainingList.horizontalHeader().setStretchLastSection(True) self.frame.lnEdt_iterations.setValidator(QIntValidator(0, 1000, self.frame)) self.initEvents() def configVirtualWorld(self): self.world.setMinimumWidth(500) self.world.setMinimumHeight(600) self.world.setFocus() def initEvents(self): self.frame.btn_left.clicked.connect(partial(self.world.moveObj, objId="P1", direction="izquierda")) self.frame.btn_right.clicked.connect(partial(self.world.moveObj, objId="P1", direction="derecha")) self.frame.btn_up.clicked.connect(partial(self.world.moveObj, objId="P1", direction="arriba")) self.frame.btn_down.clicked.connect(partial(self.world.moveObj, objId="P1", direction="abajo")) self.frame.btn_grab.clicked.connect(self.world.grabObj) self.frame.btn_dance.clicked.connect(self.world.dance) self.frame.btn_insertObj.clicked.connect(self.insertObj) self.frame.btn_execSentence.clicked.connect(self.execSentence) self.frame.lnEdt_sentence_execute.returnPressed.connect(self.execSentence) self.frame.btn_clearLog.clicked.connect(self.frame.txtEdt_log.clear) self.frame.btn_addTrainInput.clicked.connect(self.addTrainInput) self.frame.lnEdt_sentence_train.returnPressed.connect(self.addTrainInput) self.frame.btn_train.clicked.connect(self.trainFromInputList) self.frame.btn_clear_train.clicked.connect(self.clearInputTable) def execSentence(self): sentence = self.frame.lnEdt_sentence_execute.text().lower() if (sentence is None) or (not sentence): sentence = "-" self.frame.txtEdt_log.append("<b>>></b> " + sentence) sentence = sentence.split() predictions = self.model.inputSentence(sentence, verbosity=2, learn=False) task = predictions[0] argument = predictions[1][:-6] if task == "mover-event": self.frame.txtEdt_log.append(self.world.moveObj("P1", argument)) elif task == "recoger-event": self.frame.txtEdt_log.append(self.world.grabObj()) elif task == "bailar-event": self.frame.txtEdt_log.append(self.world.dance()) else: self.frame.txtEdt_log.append('<font color="Red">' "P1: No se que hacer" "</font><br>") self.model.reset() def talk(self, speech=None): """ Displays a sentence in the log """ if (speech is None) or (not speech): speech = self.frame.lnEdt_speak.displayText() self.frame.lnEdt_speak.clear() self.frame.txtEdt_log.append('<font color="Green">' "P1: " + speech + "</font><br>") def addTrainInput(self): """ Adds an input to the list of inputs that will be used for training. """ sentence = self.frame.lnEdt_sentence_train.text() action = self.frame.cmbBx_action.currentText() if action == "Mover arriba": action = "mover-event" argument = "arriba-event" elif action == "Mover abajo": action = "mover-event" argument = "abajo-event" elif action == "Mover izquierda": action = "mover-event" argument = "izquierda-event" elif action == "Mover derecha": action = "mover-event" argument = "derecha-event" elif action == "Hablar": action = "hablar-event" argument = self.frame.lnEdt_argument.text() if argument == "": argument = "nothing-event" elif action == "Bailar": action = "bailar-event" argument = "nothing-event" elif action == "Recoger": action = "recoger-event" argument = "nothing-event" else: action = "nothing-event" argument = "nothing-event" rowCount = self.frame.tblWdgt_trainingList.rowCount() self.frame.tblWdgt_trainingList.setRowCount(rowCount + 1) self.frame.tblWdgt_trainingList.setItem(rowCount, 0, QTableWidgetItem(sentence)) self.frame.tblWdgt_trainingList.setItem(rowCount, 1, QTableWidgetItem(action)) self.frame.tblWdgt_trainingList.setItem(rowCount, 2, QTableWidgetItem(argument)) self.frame.tblWdgt_trainingList.resizeColumnsToContents() def trainFromInputList(self): """ Gets the Input List from the tblWdgt_trainingList and starts training the model. """ trainingList = [] sourceTable = self.frame.tblWdgt_trainingList for row in xrange(sourceTable.rowCount()): sentence = sourceTable.item(row, 0).text().split() event = [sourceTable.item(row, 1).text(), sourceTable.item(row, 2).text()] trainingList.append((sentence, event)) iterations = int(self.frame.lnEdt_iterations.text()) self.frame.controlPanel.setEnabled(False) self.frame.statusBar().showMessage("Training in progress...") self.model.train(iterations, trainingData=trainingList, maxTime=-1, verbosity=1) self.frame.controlPanel.setEnabled(True) self.frame.statusBar().showMessage("Done!", 2000) def importInputList(self): """ Opens a file selection window to select the csv where the Inputs List is going to be imported from. """ fileData = QFileDialog.getOpenFileName(self.frame, "Import Input List", "", "Python Files (*.py)") trainingSet = imp.load_source("TrainingSet", fileData[0]) def clearInputTable(self): self.frame.tblWdgt_trainingList.clear() self.frame.tblWdgt_trainingList.setRowCount(0) self.frame.tblWdgt_trainingList.setHorizontalHeaderLabels(["Frase", "Accion", "Argumento"]) self.frame.tblWdgt_trainingList.horizontalHeader().setStretchLastSection(True) def insertObj(self): objType = self.frame.cmbBx_insertObj.currentText() self.world.insertObj(objType)