class TestUI(QtGui.QMainWindow): """ This is the user interface. """ def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.ui = Ui_MainWindow() self.ui.setupUi(self)
class ControlVentanaMain(QtGui.QMainWindow,Ui_MainWindow): #class ControlVentanaMain(QtGui.QWidget,Ui_MainWindow): def __init__(self, parent=None): super(ControlVentanaMain, self).__init__(parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.setWindowTitle("Navegador") QtCore.QObject.connect(self.ui.go_button, QtCore.SIGNAL('clicked()'), self.openUrl) QtCore.QObject.connect(self.ui.facebookshare, QtCore.SIGNAL('clicked()'), self.compartir) QtCore.QObject.connect(self.ui.input_url, QtCore.SIGNAL("returnPressed()"), self.ui.go_button.click) self.ui.input_url.setText("http://www.google.es/")#<-- para que aparezca la primera vez en donde estamos. def openUrl(self): url = str(self.ui.input_url.text())#<-- obtengo de qt lo que ha escrito el usuario o = ReformateoUrl(url) #<-- creo el objeto o pasandole la url para q la use luego el formateo o.formatear() #<-- ejecuto el reformateo url = o.url #<-- le seteo el nuevo valor del atributo url del objeto o ya formateado self.ui.webView.setFocus() #self.ui.webView.load(QtCore.QUrl(url)) self.ui.webView.setUrl(QtCore.QUrl(url))#<-- navegamos a la url indicada #print url self.ui.input_url.setText(url) #<-- ponemos la nueva url formateada/actualizada. def compartir(self): url = str(self.ui.input_url.text())#<-- obtengo de qt lo que ha escrito el usuario o = ReformateoUrl(url) #<-- creo el objeto o pasandole la url para q la use luego el formateo o.formatear() #<-- ejecuto el reformateo url = o.url #<-- le seteo el nuevo valor del atributo url del objeto o ya formateado url = "https://www.facebook.com/sharer.php?u=" + url self.ui.webView.setFocus() #self.ui.webView.load(QtCore.QUrl(url)) self.ui.webView.setUrl(QtCore.QUrl(url))#<-- navegamos a la url indicada #print url self.ui.input_url.setText(url) #<-- ponemos la nueva url formateada/actualizada. def loadComplete(self): self.url.setText(self.web.url().toString()) self.status.hide()
class Peliculas(QtGui.QMainWindow): tabla_columnas = ( (u"Título",200), (u"Año",50), (u"Director",150), (u"País",50), (u"Rank",40), ) def __init__(self, parent=None): QtGui.QMainWindow.__init__(self, parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.load_data_tabla() self.show() self.setFixedSize(576,348) self.conectar_acciones() self.ui.info.setVisible(False) self.messageDialog = QtGui.QMessageBox(self) self.messageDialog.setWindowTitle("Error") def conectar_acciones(self): self.ui.btn_subir.clicked.connect(self.action_btn_subir) self.ui.btn_bajar.clicked.connect(self.action_btn_bajar) def load_data_tabla(self): '''Método para mostrar los datos de la tabla, muestra todos los elementos de la tabla "movies" de la base de datos''' datos = controller.getDatos() rows = len(datos) model = QtGui.QStandardItemModel(rows,len(self.tabla_columnas)) self.ui.tabla.setModel(model) for col,h in enumerate(self.tabla_columnas): model.setHeaderData(col, QtCore.Qt.Horizontal, h[0]) self.ui.tabla.setColumnWidth(col, h[1]) for i,data in enumerate(datos): row = [data[1],data[3],data[4],data[5],data[8]] for j, field in enumerate(row): index = model.index(i, j, QtCore.QModelIndex()) model.setData(index,field) model.item(i).mov = data modelSel = self.ui.tabla.selectionModel() modelSel.currentChanged.connect(self.tabla_cell_selected) def tabla_cell_selected(self,index,indexp): self.mostrar_datos(index) def action_btn_subir(self): self.action_rank("subir") def action_btn_bajar(self): self.action_rank("bajar") def mostrar_datos(self,index): self.ui.info.setVisible(True) self.ui.lbl_title_reparto.setText("Reparto:") self.ui.lbl_title_descripcion.setText("Descripcion:") model = self.ui.tabla.model() rank = model.index(index.row(), 4, QtCore.QModelIndex()).data() movie = controller.getDatoRank(rank) pmap = QtGui.QPixmap(str(os.getcwd())+"/db_movies/"+str(movie[0]['poster'])) self.ui.lbl_image.setPixmap(pmap) self.ui.lbl_reparto.setText(str(movie[0]['stars'])) self.ui.lbl_descripcion.setText(str(movie[0]['description'])) self.setFixedSize(805,650) def action_rank(self,accion): model = self.ui.tabla.model() index = self.ui.tabla.currentIndex() if index.row()==-1: self.messageDialog.setText(u"Debe seleccionar una película.") self.messageDialog.exec_() else: rank = model.index(index.row(), 4, QtCore.QModelIndex()).data() movie = controller.getDatoRank(rank) old_rank = int(movie[0]['ranking']) if(accion == "subir"): new_rank = old_rank-1 elif(accion == "bajar"): new_rank = old_rank+1 if(new_rank == 0): self.messageDialog.setText(u"No se puede subir más el rank.") self.messageDialog.exec_() else: movie_a = controller.getDatoRank(new_rank) controller.updateDatoRank(movie[0]['title'],new_rank) if(movie_a): controller.updateDatoRank(movie_a[0]['title'],old_rank) self.load_data_tabla()
class FuelPlanner(QtWidgets.QMainWindow): def __init__(self, parent=None): super(FuelPlanner, self).__init__(parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.msgBox = QtWidgets.QMessageBox() #Pesos self.MRW = 106000 self.MTOW = 105000 self.MZFW = 87000 self.SOW = 61252 self.MLW = 95300 #inicializando aeronave vacia self.ZFW = 61252 self.TOW = 61252 #inicializando combustible self.combustible_minimo_vuelo = 8040 self.combustible_maximo = 24649 self.combustible_reserva_final = 4000 self.tiempo_reserva_final = timedelta(minutes=45) self.tiempo_extra = timedelta() self.ui.timeEdit_reserva_final.setTime(QtCore.QTime(0, 45)) self.ui.lineEdit_num_app.setText( "650") #por defecto una sola app instrumental self.ui.comboBox_num_app.currentIndexChanged.connect( self.calcular_combustible_apps) self.ui.spinBox_extra.valueChanged.connect(self.calcular_tiempo_extra) self.ui.pushButton.clicked.connect(self.calcular) def calcular_combustible_apps(self): combustible_app_instrumental = int( self.ui.comboBox_num_app.currentText()) * 650 self.ui.lineEdit_num_app.setText(str(combustible_app_instrumental)) def calcular_tiempo_extra(self): combustible_extra = self.ui.spinBox_extra.value() tiempo_extra_minutos = combustible_extra * 60 / 2700 self.tiempo_extra = timedelta(minutes=tiempo_extra_minutos) tiempo = QtCore.QTime(int(tiempo_extra_minutos / 60), tiempo_extra_minutos % 60) self.ui.timeEdit_extra.setTime(tiempo) def calcular(self): #TODO obtener valores desde la interfaz combustible_extra = self.ui.spinBox_extra.value() combustible_taxeo = self.ui.spinBox_taxeo.value() combustible_app_instrumental = int( self.ui.comboBox_num_app.currentText( )) * 650 #650 por cada app por instrumentos distancia_vuelo = self.ui.comboBox_distancia.currentText() distancia_alterno = self.ui.comboBox_distancia_alterno.currentText() altura_vuelo = self.ui.comboBox_altura.currentText() viento_vuelo = self.ui.comboBox_viento.currentText() carga_vuelo = self.ui.spinBox_payload.value() self.ZFW = self.SOW + carga_vuelo plan_ruta = baseDatos.calcularCombustibleRuta(altura_vuelo, distancia_vuelo, viento_vuelo) if not plan_ruta: self.msgBox.setWindowTitle('Error') self.msgBox.setText( 'Error: The current parameters are out of a JT8D-7 equiped Dc-9-31 flight envelope.' ) self.msgBox.setIcon(QtWidgets.QMessageBox.Critical) self.msgBox.setStandardButtons(QtWidgets.QMessageBox.Ok) self.msgBox.exec_() self.ui.lineEdit_combustible_total.setText("") self.ui.lineEdit_combustible_ruta.setText("") self.ui.lineEdit_combustible_alterno.setText("") return plan_alterno = baseDatos.calcularCombustibleAlterno(distancia_alterno) combustible_total = combustible_extra + combustible_taxeo + combustible_app_instrumental + self.combustible_reserva_final + ( plan_ruta['combustible'] * 1000) + plan_alterno['combustible'] tiempo_ruta = plan_ruta['tiempo'].split(":") tiempo_alterno = plan_alterno['tiempo'].split(":") tiempo_ruta_delta = timedelta(hours=int(tiempo_ruta[0]), minutes=int(tiempo_ruta[1])) tiempo_alterno_delta = timedelta(hours=int(tiempo_alterno[0]), minutes=int(tiempo_alterno[1])) tiempo_total = tiempo_ruta_delta + tiempo_alterno_delta + self.tiempo_extra + self.tiempo_reserva_final #el manual indica añadir 150 lbs de combustible por cada 5000 libras #que el LW supere las 85000 libras LW = self.ZFW + (combustible_total - ((plan_ruta['combustible'] * 1000) + 300 + 650)) if LW > 85000: diferencia = LW - 85000 extra = diferencia * 150 / 5000 combustible_total = combustible_total + extra if combustible_total > self.combustible_maximo: exceso = int(combustible_total - self.combustible_maximo) self.msgBox.setWindowTitle('Too much fuel') self.msgBox.setText("There's an excess of " + str(exceso) + " pounds of fuel.") self.msgBox.setIcon(QtWidgets.QMessageBox.Critical) self.msgBox.setStandardButtons(QtWidgets.QMessageBox.Ok) self.msgBox.exec_() self.ui.lineEdit_combustible_total.setText("") return if combustible_total < self.combustible_minimo_vuelo: self.msgBox.setWindowTitle('Low fuel') self.msgBox.setText("The FAA requires a minimum of " + str(self.combustible_minimo_vuelo) + " for dispatch. Current fuel: " + str(combustible_total)) self.msgBox.setIcon(QtWidgets.QMessageBox.Critical) self.msgBox.setStandardButtons(QtWidgets.QMessageBox.Ok) self.msgBox.exec_() self.ui.lineEdit_combustible_total.setText("") return self.TOW = self.ZFW + combustible_total #---------------- Modificando interfaz ----------------- #Combustible self.ui.lineEdit_combustible_ruta.setText( str(plan_ruta['combustible'] * 1000)) self.ui.lineEdit_combustible_alterno.setText( str(plan_alterno['combustible'])) self.ui.lineEdit_num_app.setText(str(combustible_app_instrumental)) self.ui.lineEdit_combustible_total.setText(str(combustible_total)) #Tiempos horas, minutos = tiempo_ruta self.ui.timeEdit_combustible_ruta.setTime( QtCore.QTime(int(horas), int(minutos))) horas, minutos = tiempo_alterno self.ui.timeEdit_combustible_alterno.setTime( QtCore.QTime(int(horas), int(minutos))) minutos = int(tiempo_total.seconds / 60) % 60 horas = int((tiempo_total.seconds / 60) / 60) self.ui.timeEdit_tiempo_total.setTime(QtCore.QTime(horas, minutos)) #Pesos self.ui.lcdNumber_ZFW.display(self.ZFW) self.ui.lcdNumber_TOW.display(self.TOW) self.ui.lcdNumber_LW.display(LW) paletaLcdZfw = self.ui.lcdNumber_ZFW.palette() paletaLcdTow = self.ui.lcdNumber_TOW.palette() paletaLcdLw = self.ui.lcdNumber_LW.palette() if self.TOW > self.MTOW: paletaLcdTow.setColor(paletaLcdTow.WindowText, QtGui.QColor(255, 45, 30)) else: paletaLcdTow.setColor(paletaLcdTow.WindowText, QtGui.QColor(24, 28, 21)) if self.ZFW > self.MZFW: paletaLcdZfw.setColor(paletaLcdZfw.WindowText, QtGui.QColor(255, 45, 30)) else: paletaLcdZfw.setColor(paletaLcdZfw.WindowText, QtGui.QColor(24, 28, 21)) if LW > self.MLW: paletaLcdLw.setColor(paletaLcdLw.WindowText, QtGui.QColor(255, 45, 30)) else: paletaLcdLw.setColor(paletaLcdLw.WindowText, QtGui.QColor(24, 28, 21)) self.ui.lcdNumber_TOW.setPalette(paletaLcdTow) self.ui.lcdNumber_ZFW.setPalette(paletaLcdZfw) self.ui.lcdNumber_LW.setPalette(paletaLcdLw)