Пример #1
0
    def __init__(self):
        super(Ui,
              self).__init__()  # Call the inherited classes __init__ method
        uic.loadUi(join(dirname(__file__), 'UI/login.ui'),
                   self)  # Load the .ui file

        self.show()  # Show the GUI
        self.loginButton.setStyleSheet(
            "QPushButton#loginButton{ color: white; background-color: #222628; } QPushButton#loginButton::hover{ background-color: #4e5152;} QPushButton#loginButton::pressed{background-color: black;}"
        )
        self.db_import.triggered.connect(self.import_db)
        self.db_import.setShortcut(QtGui.QKeySequence("Ctrl+i"))
        self.loginButton.clicked.connect(self.login_button_clicked)
        self.user.returnPressed.connect(self.login_button_clicked)
        self.passwd.returnPressed.connect(self.login_button_clicked)
        if (not file_exists(CONFIG_FILE_PATH)):
            create_properties()
        sql_con = sqlite.sqlite_connector()  # Agafem el connector de SQLite
        if (len(sql_con.get_users()) == 0):
            if comprobation_message(
                    'Primer inicio',
                    'No existe ninguna base de datos, la que había ha sido eliminada o no hay usuarios. ¿Quieres crear el primero?'
            ):  # If OK is clicked in the button
                self.create_user_window = create_user.Create_user(
                    first_user=True)
            else:
                if comprobation_message(
                        'Primer inicio',
                        '¿Quieres importar una base de datos?'):
                    import_db(self)
Пример #2
0
    def save_edit(self):
        self.set_editable_text(False) # Desactivem l'edició

        sql_con = sqlite.sqlite_connector()

        if (len(self.dni.text()) < 9):  # Major que 9 no pot ser perque està controlat a l'interfície
            QtWidgets.QMessageBox.critical(self, 'ERROR', "Introduce un DNI válido.")
        if(self.nom.text() == ""):
            QtWidgets.QMessageBox.critical(self, 'ERROR', "Es obligatorio introducir un nombre.")
        elif(self.dni_letters[int(self.dni.text()[:-1]) % 23] != self.dni.text()[-1]):
            QtWidgets.QMessageBox.critical(self, 'ERROR', "Letra del DNI errónea")
        else:
            try:
                sql_con.edit_patient(self.dni.text(), self.nom.text(), self.cognom.text(), self.medicos.currentText(), self.direccio.text(),
                                    self.telefon.text(), self.mail.text(), self.sip.text(), self.altura.text(), self.pes.text(),
                                    self.naiximent.text(), self.hombre.isChecked(), self.diagnostic.text(), self.fase.currentIndex(),
                                    self.imc.text(), self.grasa.text(), self.medicacio.toPlainText(), photo_to_blob(self.fotoCara.pixmap()),
                                    photo_to_blob(self.fotoCuerpo.pixmap()))
                QtWidgets.QMessageBox.information(self, 'Paciente modificado', "¡El paciente ha sido modificado con éxito!")

                self.newPatientButton.show()
                self.guardarButton.hide()
                self.cancelarButton.hide()
            except sqlite.sqlite3.IntegrityError:
                QtWidgets.QMessageBox.critical(self, 'ERROR', "Ya existe un paciente con este DNI")
            finally:
                sql_con.close()
Пример #3
0
 def add_patient(self):
     sql_con = sqlite.sqlite_connector()
     if (len(self.dni.text()) < 9):  # Major que 9 no pot ser perque està controlat a l'interfície
         QtWidgets.QMessageBox.critical(self, 'ERROR', "Introduce un DNI válido.")
     elif(self.dni_letters[int(self.dni.text()[:-1]) % 23] != self.dni.text()[-1]):
         QtWidgets.QMessageBox.critical(self, 'ERROR', "Letra del DNI errónea")
     elif(self.nom.text() == ""):
         QtWidgets.QMessageBox.critical(self, 'ERROR', "Es obligatorio introducir un nombre.")
     elif(not self.check_mail):
         QtWidgets.QMessageBox.critical(self, 'ERROR', "El e-mail no és correcto.")
     else:
         try:
             sql_con.add_patient(self.dni.text(), self.nom.text(), self.cognom.text(), self.medicos.currentText(), self.direccio.text(),
                                 self.telefon.text(), self.mail.text(), self.sip.text(), self.altura.text(), self.pes.text(),
                                 self.naiximent.text(), self.hombre.isChecked(), self.diagnostic.text(), self.fase.currentIndex(),
                                 self.imc.text(), self.grasa.text(), self.medicacio.toPlainText(), photo_to_blob(self.fotoCara.pixmap()),
                                 photo_to_blob(self.fotoCuerpo.pixmap()))
             QtWidgets.QMessageBox.information(self, 'Paciente añadido', "¡El paciente ha sido añadido con éxito!")
             if comprobation_message('Añadir otro paciente', '¿Quieres añadir otro paciente?'): # If OK is clicked in the button
                 self.dni.setText("")
                 self.nom.setText("")
                 self.cognom.setText("")
             else:
                 self.close()
         except sqlite.sqlite3.IntegrityError as e:
             QtWidgets.QMessageBox.critical(self, 'ERROR', "Ya existe un paciente con este DNI")
             print(e)
         finally:
             sql_con.close()
Пример #4
0
 def check_patients_without_doctor(self):
     sql_con = sqlite.sqlite_connector()
     patients_without_doctor = sql_con.get_patients_no_doctor()
     sql_con.close()
     for patient in patients_without_doctor:
         if comprobation_message('Paciente sin médico', 'El paciente '+patient[1]+" "+patient[2]+' ('+patient[0]+'), no tiene ningún médico asignado ya que el que tenía se ha eliminado. ¿Quieres añadirle un nuevo médico ahora?'):
             self.new_window = edit_patient.Edit_patient(patient[0], True)
Пример #5
0
 def show_patients(self):
     sql_con = sqlite.sqlite_connector()
     patients = sql_con.get_patient_names(self.current_user)
     for patient in patients:
         self.patients_dni.append(patient[2]) # Guardem el DNI de l'usuari
         self.model.appendRow(QtGui.QStandardItem(patient[0]+" "+patient[1]))
     sql_con.close()
Пример #6
0
 def save_data(self):
     """
     Desa tots els canvis
     """
     sql_con = sqlite.sqlite_connector()
     times = [float(self.tiempoTotal_min.text()), float(self.tiempoTotal_max.text()), float(self.seg1_min.text()), float(self.seg1_max.text()), float(self.seg2_min.text()), float(self.seg2_max.text()), float(self.seg3_min.text()), float(self.seg3_max.text())]
     sql_con.set_new_segments_time(times)
Пример #7
0
    def load_data(self):
        self.set_editable_text(False)
        self.cancelarButton.hide()
        self.guardarButton.hide()
        self.newPatientButton.show()

        sql_con = sqlite.sqlite_connector()
        data = sql_con.get_patient_data(self.patient_dni)
        sql_con.close()

        self.dni.setText(data[0])
        self.nom.setText(data[1])
        self.cognom.setText(data[2])
        self.direccio.setText(data[4])
        self.telefon.setText(str(data[5]))
        self.mail.setText(data[6])
        self.sip.setText(str(data[7]))
        self.altura.setText(str(data[8]))
        self.pes.setText(str(data[9]))
        self.naiximent.setDate(QtCore.QDate.fromString(data[10], "dd/MM/yyyy"))
        if (data[11] != 'M'):
            self.mujer.setChecked(True)
        self.diagnostic.setDate(QtCore.QDate.fromString(
            data[12], "dd/MM/yyyy"))
        self.fase.setCurrentIndex(data[13])
        self.imc.setText(str(data[14]))
        self.grasa.setText(str(data[15]))
        self.medicacio.setText(data[16])

        self.fotoCara.setPixmap(self.blob_to_pixmap(data[17]))
        self.fotoCuerpo.setPixmap(self.blob_to_pixmap(data[18]))
Пример #8
0
 def delete_patient(self):
     if comprobation_message('Comprobación', '¿Estás seguro de querer eliminar al paciente '+self.patient_item.text()+' (DNI: '+self.patients_dni[self.model.indexFromItem(self.patient_item).row()]+')?'):
         sql_con = sqlite.sqlite_connector()
         sql_con.delete_patient(self.patients_dni[self.model.indexFromItem(self.patient_item).row()])
         sql_con.close()
         QtWidgets.QMessageBox.information(self, 'Confirmación', "El paciente ha sido eliminado con éxito.")
         self.refresh_list()
         self.borrarPaciente.hide()
Пример #9
0
 def refresh_table(self):
     sql_con = sqlite.sqlite_connector()
     self.patient_info.setText(
         "Paciente: " +
         sql_con.get_patient_name(self.doctor, self.patient_dni))
     self.model = TableModel(sql_con.get_patient_times(self.patient_dni))
     sql_con.close()
     self.info_table.setModel(self.model)
     self.info_table.clicked.connect(self.on_table_click)
Пример #10
0
def load_doctors(combobox, doctor):
    sql_con = sqlite.sqlite_connector()
    doctors = sql_con.get_users()
    sql_con.close()
    for i in range(0, len(doctors)):
        combobox.addItem(doctors[i][0])
        if(doctor == doctors[i][0]):
            combobox.setCurrentIndex(i)
    return combobox
Пример #11
0
 def fill_combo(self):
     """
     Funció que plena el QComboBox amb tots els pacients del metge actual
     """
     sql_con = sqlite.sqlite_connector() # Arrepleguem la connexió a SQLite
     patients = sql_con.get_patient_names(self.current_user) # Arrepleguem una matriu amb les dades de tots els pacients del metge actual
     sql_con.close() # Tanquem la connexió una vegada recuperades les dades
     for patient in patients:
         self.patients_dni.append(patient[2]) # Ens guardem els DNI de tots els pacients de forma interna
         self.comboPatients.addItem(patient[0]+" "+patient[1]) # Afegim el nom i cognom al QComboBox
Пример #12
0
 def delete_test(self):
     if self.current_index != -1:
         sql_con = sqlite.sqlite_connector()
         sql_con.delete_test(self.model.getData()[self.current_index][0],
                             self.patient_dni)
         self.current_index = -1
         self.delete_selected_test.setEnabled(False)
         self.times_changed.emit()
         self.refresh_table()
     else:
         print("Error muffled by delete_test function in chrono.py.")
Пример #13
0
    def save_times(self):
        """
        Aquesta funció crida al controlador de la DB per guardar una llista de temps al pacient actual
        """
        sql_con = sqlite.sqlite_connector() # Creem la connexió

        sql_con.save_lap_times(self.lap_times, self.current_patient, self.observations.toPlainText()) # Guardem els temps en l'usuari actual

        sql_con.close() # Tanquem la connexió
        self.saveIcon.hide() # Amaguem l'icona de guardar ja que ja s'ha guardat
        self.observations.setText("") #Borrem el text de les observacions
        self.show_patient_graph() # Afegim aquest ultim temps a la gràfica
        self.saved_message_thread.start() # Escomencem el thread que mostrarà que el temps ha sigut guardat
Пример #14
0
    def show_patient_graph(self):
        """
        Mostra/Carrega la gràfica del pacient
        """

        sql_con = sqlite.sqlite_connector()  # Arrepleguem el connector a la BD

        total_times = sql_con.get_patient_total_times(
            self.current_patient
        )  # Arrepleguem en forma de llista tots els temps dels pacients
        seg1_times = sql_con.get_patient_segment_times(self.current_patient,
                                                       "lap1")
        seg2_times = sql_con.get_patient_segment_times(self.current_patient,
                                                       "lap2")
        seg3_times = sql_con.get_patient_segment_times(self.current_patient,
                                                       "lap3")
        dates = sql_con.get_patient_dates(
            self.current_patient
        )  # Arrepleguem els díes en els que es van realitzar les proves (Son llistes paral.leles)

        sql_con.close()  # Tanquem la connexió
        self.graph.clear()  # Esborrem tot el que hi ha en el gràfic
        self.graph.addLegend()  # Inicialitzem la llegenda
        self.graph.plot(dates,
                        total_times,
                        name="Total",
                        pen=pg.mkPen(color=(162, 173, 194), width=4),
                        symbol='o',
                        symbolSize=10,
                        symbolBrush=(0, 0, 0))  # Mostrem les dades
        self.graph.plot(dates,
                        seg1_times,
                        name="Segmento 1",
                        pen=pg.mkPen(color=(255, 0, 0), width=4),
                        symbol='o',
                        symbolSize=5,
                        symbolBrush=(0, 0, 0))
        self.graph.plot(dates,
                        seg2_times,
                        name="Segmento 2",
                        pen=pg.mkPen(color=(255, 255, 0), width=4),
                        symbol='o',
                        symbolSize=5,
                        symbolBrush=(0, 0, 0))
        self.graph.plot(dates,
                        seg3_times,
                        name="Segmento 3",
                        pen=pg.mkPen(color=(255, 0, 255), width=4),
                        symbol='o',
                        symbolSize=5,
                        symbolBrush=(0, 0, 0))
Пример #15
0
    def change_pass(self):
        sql_con = sqlite.sqlite_connector()
        acces_granted = sql_con.is_admin(self.current_user)
        if (not acces_granted):  # Si no és admin i no és ell mateix
            last_passwd, ok = QtWidgets.QInputDialog.getText(
                self, 'Identifícate',
                'Introduzca su contraseña actual, ' + self.dni,
                QtWidgets.QLineEdit.Password)
            if ok:
                if (not sql_con.login(
                        self.dni,
                        last_passwd)):  # SI L'AUTENTICACIÓ NO ÉS CORRECT
                    QtWidgets.QMessageBox.critical(self, 'ERROR',
                                                   "Contraseña incorrecta.")
                    sql_con.close()
                    return
                else:
                    acces_granted = True
            else:
                sql_con.close()
                return

        valid_password = False
        while (not valid_password):
            passwd, ok = QtWidgets.QInputDialog.getText(
                self, 'Cambio de contraseña para usuario ' + self.dni,
                'Introduzca la nueva contraseña: (8 carácteres o más)',
                QtWidgets.QLineEdit.Password)
            if ok:
                if (len(passwd) < 8):
                    QtWidgets.QMessageBox.critical(
                        self, 'ERROR',
                        "La contraseña debe ser de 8 carácteres o más")
                else:
                    check_passwd, ok2 = QtWidgets.QInputDialog.getText(
                        self, 'Cambio de contraseña para usuario ' + self.dni,
                        'Repite la contraseña: ', QtWidgets.QLineEdit.Password)
                    if ok2:
                        if (check_passwd != passwd):
                            QtWidgets.QMessageBox.critical(
                                self, 'ERROR', "Las contraseñas no coinciden")
                        else:
                            valid_password = True
            else:
                sql_con.close()
                return
        sql_con.change_password(self.dni, passwd)
        QtWidgets.QMessageBox.information(
            self, 'Contraseña actualizada',
            "¡La contraseña ha sido actualizada con éxito!")
        sql_con.close()
Пример #16
0
    def show_times(self):
        sql_con = sqlite.sqlite_connector()

        self.seg1_max.setText(str(sql_con.get_segment_time("seg1_max_time")))
        self.seg1_min.setText(str(sql_con.get_segment_time("seg1_min_time")))

        self.seg2_max.setText(str(sql_con.get_segment_time("seg2_max_time")))
        self.seg2_min.setText(str(sql_con.get_segment_time("seg2_min_time")))
        
        self.seg3_max.setText(str(sql_con.get_segment_time("seg3_max_time")))
        self.seg3_min.setText(str(sql_con.get_segment_time("seg3_min_time")))

        self.tiempoTotal_max.setText(str(sql_con.get_segment_time("total_max_time")))
        self.tiempoTotal_min.setText(str(sql_con.get_segment_time("total_min_time")))
        sql_con.close()
Пример #17
0
    def manage_user(self, index):
        self.dni = self.model.itemFromIndex(index).text()
        sql_con = sqlite.sqlite_connector()
        if (sql_con.is_admin(self.current_user)
                or self.dni == self.current_user):
            self.changePass.show()
        else:
            self.changePass.hide()

        if (sql_con.is_admin(self.current_user)):
            self.deleteUser.show()
        else:
            self.deleteUser.hide()

        sql_con.close()
Пример #18
0
 def create_user(self):
     dni = self.user.text()
     passwd = self.passwd.text()
     if (len(dni) < 9
         ):  # Major que 9 no pot ser perque està controlat a l'interfície
         QtWidgets.QMessageBox.critical(self, 'ERROR',
                                        "El DNI debe ser de 9 dígitos.")
     elif (self.dni_letters[int(dni[:-1]) % 23] != dni[-1]):
         QtWidgets.QMessageBox.critical(self, 'ERROR',
                                        "Letra del DNI errónea")
     elif (len(passwd) < 8):
         QtWidgets.QMessageBox.critical(
             self, 'ERROR',
             "La contraseña no puede ser menor a 8 carácteres.")
     elif (passwd != self.repeat_pass.text()):
         QtWidgets.QMessageBox.critical(self, 'ERROR',
                                        "Las contraseñas no coinciden.")
     else:
         try:
             sql_con = sqlite.sqlite_connector()
             if (self.first_user):
                 sql_con.create_initial_table()  # Creem les taules inicials
             sql_con.create_user(dni, passwd, self.adminCheck.isChecked())
             QtWidgets.QMessageBox.information(
                 self, 'Usuario añadido',
                 "¡El usuario ha sido añadido con éxito!")
             if comprobation_message('Añadir otro usuario',
                                     '¿Quieres añadir otro usuario?'
                                     ):  # If OK is clicked in the button
                 self.user.setText("")
                 self.passwd.setText("")
                 self.repeat_pass.setText("")
                 try:
                     self.adminCheck.toggled.disconnect(self.set_true)
                 except TypeError:
                     pass
             else:
                 self.close()
         except sqlite.sqlite3.IntegrityError:
             QtWidgets.QMessageBox.critical(
                 self, 'ERROR', "Ya existe un usuario con este DNI")
         finally:
             self.user.setText("")
             self.passwd.setText("")
             self.repeat_pass.setText("")
Пример #19
0
    def __init__(self, current_user, current_patient):
        super(Patient_info, self).__init__() # Call the inherited classes __init__ method
        uic.loadUi("test"+path_separator+'UI'+path_separator+'patient_info.ui', self) # Load the .ui file
        self.show() # Show the GUI

        self.patient_info.setAlignment(QtCore.Qt.AlignCenter)

        self.patient_dni = current_patient
        doctor = current_user

        sql_con = sqlite.sqlite_connector()
        self.patient_info.setText("Paciente: "+sql_con.get_patient_name(doctor, self.patient_dni))
       
        
        
        self.model = TableModel(sql_con.get_patient_times(self.patient_dni))
        sql_con.close()
        self.info_table.setModel(self.model)
        self.info_table.clicked.connect(self.editar)
Пример #20
0
 def login_button_clicked(self):
     """
     L'acció a realitzar una vegada s'apreta el botó de login
     """
     sql_con = sqlite.sqlite_connector()  # Agafem el connector de SQLite
     if (sql_con.get_con() == None):  # Si el conector retorna "None"
         QtWidgets.QMessageBox.critical(
             self, 'Error',
             "No existe ninguna base de datos. Prueba importando una con Ctrl+i o reiniciando la aplicación para crear un nuevo usuario."
         )  # Mostrem un missatge emergent d'error
     else:  # Si no retorna "None" significa que ha establit connexió, per tant la BD ja està creada
         if (sql_con.login(
                 self.user.text(),
                 self.passwd.text())):  # Si les credencials son correctes
             sql_con.close()  # Tanquem la connexió
             self.load_new_window()  # Anem carregant la nova finestra
         else:  # Si les credencials son incorrectes
             QtWidgets.QMessageBox.critical(
                 self, 'Error de autentificación',
                 "DNI i/o contraseña incorrecta."
             )  # Mostrem un missatge emergent d'error
Пример #21
0
 def delete_user(self):
     if self.current_user == self.dni:  # Arreglar aço
         QtWidgets.QMessageBox.critical(
             self, 'ERROR', "No puedes eliminar tu propio usuario.")
     else:
         if comprobation_message(
                 'Comprobación',
                 '¿Estás seguro de querer eliminar al usuario ' + self.dni +
                 '?'):
             sql_con = sqlite.sqlite_connector()
             if (sql_con.delete_user(self.dni)):
                 QtWidgets.QMessageBox.information(
                     self, 'Confirmación',
                     "El usuario ha sido eliminado con éxito.")
                 self.refresh_list()
             else:
                 QtWidgets.QMessageBox.critical(
                     self, 'ERROR',
                     "El usuario no puede eliminarse porque es el único administrador."
                 )
             sql_con.close()
Пример #22
0
def get_lap_type(lap, time, seg_id=-1):
    sql_con = sqlite.sqlite_connector()

    if (lap == -1):  # -1 és temps total
        minTotalTime = sql_con.get_segment_time("total_min_time", seg_id)
        maxTotalTime = sql_con.get_segment_time("total_max_time", seg_id)
        if (time < minTotalTime):
            return "Leve"
        elif (time > maxTotalTime):
            return "Grave"
        else:
            return "Moderado"
    elif (lap == 0):
        minTime = sql_con.get_segment_time("seg1_min_time", seg_id)
        maxTime = sql_con.get_segment_time("seg1_max_time", seg_id)
        if (time < minTime):
            return "Leve"
        elif (time > maxTime):
            return "Grave"
        else:
            return "Moderado"
    elif (lap == 1):
        minTime = sql_con.get_segment_time("seg2_min_time", seg_id)
        maxTime = sql_con.get_segment_time("seg2_max_time", seg_id)
        if (time < minTime):
            return "Leve"
        elif (time > maxTime):
            return "Grave"
        else:
            return "Moderado"
    else:
        minTime = sql_con.get_segment_time("seg3_min_time", seg_id)
        maxTime = sql_con.get_segment_time("seg3_max_time", seg_id)
        if (time < minTime):
            return "Leve"
        elif (time > maxTime):
            return "Grave"
        else:
            return "Moderado"
 def edit(self):
     sql_con = sqlite.sqlite_connector()
     sql_con.edit_observations(self.patient,self.textEditObservaciones.toPlainText(),self.date)
     sql_con.close()
     self.hide()
Пример #24
0
 def show_users(self):
     users = sqlite.sqlite_connector().get_users()
     for user in users:
         row = QtGui.QStandardItem(user[0])
         self.model.appendRow(row)
Пример #25
0
    def __init__(self):
        super(Users_management,
              self).__init__()  # Call the inherited classes __init__ method
        uic.loadUi("test" + path_separator + 'UI' + path_separator +
                   'users.ui', self)  # Load the .ui file
        self.show()  # Show the GUI

        self.deleteUser.clicked.connect(self.delete_user)
        self.changePass.clicked.connect(self.change_pass)
        self.newUser.clicked.connect(self.create_user)
        self.refreshList.clicked.connect(self.refresh_list)
        self.pacientesIcon.clicked.connect(self.open_patients_menu)
        self.settingsIcon.clicked.connect(self.open_settings)

        config = load_properties()
        self.current_user = config.get('UsersSection', 'currentUser')

        self.model = QtGui.QStandardItemModel()
        self.usersList.setModel(self.model)
        self.usersList.clicked.connect(self.manage_user)

        self.refresh_list()
        self.dni = ""

        sql_con = sqlite.sqlite_connector()
        if (sql_con.is_admin(self.current_user)):
            self.newUser.show()
        else:
            self.newUser.hide()
        sql_con.close()

        self.cronIcon.clicked.connect(self.return_to_chrono)

        self.changePass.setStyleSheet(
            "QPushButton#changePass{ border: 2px solid #717987; font-weight: bold; color: white; background-color: #a2adc2; } QPushButton#changePass::hover{ background-color: #BDC5D4;} QPushButton#changePass::pressed{background-color: #717987;}"
        )
        self.deleteUser.setStyleSheet(
            "QPushButton#deleteUser{ border: 2px solid #717987; font-weight: bold; color: white; background-color: #a2adc2; } QPushButton#deleteUser::hover{ background-color: #BDC5D4;} QPushButton#deleteUser::pressed{background-color: #717987;}"
        )
        self.newUser.setStyleSheet(
            "QPushButton#newUser{ border: 2px solid #717987; font-weight: bold; color: white; background-color: #a2adc2; } QPushButton#newUser::hover{ background-color: #BDC5D4;} QPushButton#newUser::pressed{background-color: #717987;}"
        )
        self.refreshList.setStyleSheet(
            "QPushButton#refreshList{ border: 2px solid #717987; font-weight: bold; color: white; background-color: #a2adc2; } QPushButton#refreshList::hover{ background-color: #BDC5D4;} QPushButton#refreshList::pressed{background-color: #717987;}"
        )

        self.centralwidget.setStyleSheet(
            "QWidget#centralwidget{ background-color: #fdfdff}")
        self.barraLateral.setStyleSheet(
            "QWidget#barraLateral{ background-color: #555860; }")
        self.cronIcon.setStyleSheet(
            "QPushButton#cronIcon::hover{ border: none; background-color: #a2adc2;} QPushButton#cronIcon::pressed{background-color: #222628;}"
        )
        self.users.setStyleSheet(
            "QPushButton#users::hover{ border: none; background-color: #a2adc2;} QPushButton#users::pressed{background-color: #222628;}"
        )
        self.pacientesIcon.setStyleSheet(
            "QPushButton#pacientesIcon::hover{ border: none; background-color: #a2adc2;} QPushButton#pacientesIcon::pressed{background-color: #222628;}"
        )
        self.settingsIcon.setStyleSheet(
            "QPushButton#settingsIcon::hover{ border: none; background-color: #a2adc2;} QPushButton#settingsIcon::pressed{background-color: #222628;}"
        )