def go_ricevuta(self): nome = self.edit_cf_cliente.currentText().split("-") for cliente in self.controller_clienti.get_lista_clienti(): self.controller_cliente = ControllerCliente(cliente) if self.controller_cliente.get_nome( ) + " " + self.controller_cliente.get_cognome() == nome[0].strip(): self.controller_cliente.set_visita_medica("Effettuato") self.cliente_visitato = cliente self.controller_clienti.save_data() if self.cliente_visitato.get_pagamento_iniziale() == "None": QMessageBox.critical(self, "Errore", "Il cliente non ha pagato la rata iniziale!", QMessageBox.Ok) else: for visita in self.controller.get_lista_visite(): self.controller_visita = ControllerVisitaMedica(visita) if self.controller_visita.get_cliente() == nome[0].strip(): self.controller_visita.set_descrizione( self.edit_descrizione.toPlainText()) self.controller_visita.set_esito( self.edit_esito.currentText()) self.controller.save_data() QMessageBox.information(self, "Confermato", "Esito aggiunto al sistema", QMessageBox.Ok) self.go_pagamenti = VistaListaVisiteMediche.VistaListaVisiteMediche() self.go_pagamenti.show() self.close()
def go_disdici(self): if self.controller.get_lista_visite(): for visita in self.controller.get_lista_visite(): self.controller_visita = ControllerVisitaMedica(visita) if self.controller_visita.get_esito() != "None": QMessageBox.critical(self, "Errore", "Nessuna prenotazione nel sistema", QMessageBox.Ok) else: self.go_disdire = VistaDisdiciVisitaMedica() self.go_disdire.show() self.close() else: QMessageBox.critical(self, "Errore", "Nessuna prenotazione nel sistema", QMessageBox.Ok)
def go_esiti(self): trovato = False if self.controller.get_lista_visite(): for visita in self.controller.get_lista_visite(): self.controller_visita = ControllerVisitaMedica(visita) if self.controller_visita.get_descrizione() == "None": trovato = True self.go_esito = VistaInserisciEsitoVisita() self.go_esito.show() self.close() if not trovato: QMessageBox.critical( self, "Errore", "Nessuna prenotazione nel sistema nel sistema", QMessageBox.Ok) else: QMessageBox.critical( self, "Errore", "Nessuna prenotazione nel sistema nel sistema", QMessageBox.Ok)
def set_data(self): self.icon_no = QIcon("Image/no.png") self.icon_si = QIcon("Image/si.png") self.no = QTableWidgetItem() self.no.setIcon(self.icon_no) self.si = QTableWidgetItem() self.si.setIcon(self.icon_si) i = 1 n_righe = len(self.controller.get_lista_visite()) self.table.setRowCount(n_righe + 1) for visita in self.controller.get_lista_visite(): self.controller_visita = ControllerVisitaMedica(visita) self.table.setItem(i, 0, QTableWidgetItem(self.controller_visita.get_id())) self.table.setItem(i, 1, QTableWidgetItem(self.controller_visita.get_cliente())) self.table.setItem(i, 2, QTableWidgetItem(self.controller_visita.get_data())) if self.controller_visita.get_descrizione() == "None": self.table.setItem(i, 3, QTableWidgetItem(self.no)) else: self.table.setItem(i, 3, QTableWidgetItem(self.controller_visita.get_descrizione())) if self.controller_visita.get_esito() == "None": self.table.setItem(i, 4, QTableWidgetItem(self.no)) else: self.table.setItem(i, 4, QTableWidgetItem(self.controller_visita.get_esito())) i = i + 1
class VistaDisdiciVisitaMedica( QWidget ): # Apre la vista che permette di disdire una visita col medico dell'autoscuola. def __init__(self, parent=None): super(VistaDisdiciVisitaMedica, self).__init__(parent) self.controller = ControllerListaVisiteMediche() # Inserisce in lista_visite le informazioni del file 'lista_visite.pickle'. self.stylesheet_frame = """ QFrame{ background-color: white; border: 1px solid grey; } """ self.stylesheet_window = """ QWidget{ background-color: #dfdfdf; } """ self.stylesheet_label = """ QLabel{ background-color: transparent; } QComboBox{ background-color: white; border: 1px solid grey; color: black; } """ self.stylesheet_button_back = """ QPushButton{ border-radius: 15px; background-color: transparent; } QPushButton::Pressed{ background-color:transparent; } """ self.stylesheet_button = """ QPushButton{ background-color: #cc3234; color: white; border-radius: 15px; } QPushButton::Pressed{ background-color: grey } """ self.imagePath = "Image/foto.png" self.image = QImage(self.imagePath) self.label = QLabel(self) self.label.setPixmap(QPixmap.fromImage(self.image)) self.label.setScaledContents(True) self.label.setGeometry(0, 0, 700, 500) # Inserimento e impostazioni grafiche dell'etichetta 'Disdici Visita'. self.label_titolo = QLabel(self) self.font_titolo = QFont("Arial", 18, QFont.Bold) self.label_titolo.setText("Disdici Visita") self.label_titolo.setFont(self.font_titolo) self.label_titolo.setStyleSheet(self.stylesheet_label) self.label_titolo.setGeometry(50, 55, 300, 40) # Inserimento e impostazioni grafiche del frame nella finestra. self.frame = QFrame(self) self.frame.setStyleSheet(self.stylesheet_frame) self.frame.setGeometry(50, 100, 600, 250) # Inserimento e impostazioni grafiche dell'etichetta 'Selezionare la visita'. self.label_id = QLabel(self) self.font_id = QFont("Times", 9) self.label_id.setFont(self.font_id) self.label_id.setText("Selezionare la visita") self.label_id.setGeometry(60, 190, 160, 30) self.label_id.setStyleSheet(self.stylesheet_label) # Inserimento e impostazioni grafiche del menù a tendina contenente le visite contenute nella # lista_visite. Inoltre la visita selezionata nel menù viene salvata nella variabile # 'visita_da_eliminare'. self.selezione_visita = QComboBox(self) for visita in self.controller.get_lista_visite(): self.controller_visita = ControllerVisitaMedica(visita) if self.controller_visita.get_esito() == "None": self.selezione_visita.addItem( self.controller_visita.get_cliente() + " - " + self.controller_visita.get_data()) nome = self.selezione_visita.currentText().split("-") for visita in self.controller.get_lista_visite(): self.controller_visita = ControllerVisitaMedica(visita) if nome[0].strip() == self.controller_visita.get_cliente( ) and self.controller_visita.get_esito() == "None": self.visita_da_eliminare = visita self.selezione_visita.setGeometry(250, 190, 300, 30) self.selezione_visita.setStyleSheet(self.stylesheet_label) # Inserimento e impostazioni grafiche del bottone per confermare la rimozione della visita. self.button_rimuovi = QPushButton(self) self.button_rimuovi.setText("Rimuovi") self.font_button = QFont("Times", 11) self.button_rimuovi.setFont(self.font_button) self.button_rimuovi.setGeometry(525, 410, 120, 50) self.button_rimuovi.setStyleSheet(self.stylesheet_button) self.button_rimuovi.clicked.connect(self.disdici_visita) # Inserimento e impostazioni grafiche del bottone per tornare alla vista precedente. self.button_back = QPushButton(self) self.button_back.setIcon(QIcon('Image/back.png')) self.button_back.setIconSize(QSize(60, 60)) self.button_back.setGeometry(50, 390, 90, 90) self.button_back.setStyleSheet(self.stylesheet_button_back) self.button_back.clicked.connect(self.go_back) # Impostazioni grafiche generali della finestra del programma. self.setWindowTitle("Disdici Visita") self.setStyleSheet(self.stylesheet_window) self.resize(700, 500) self.setFixedSize(self.size()) # == disdici_visita == # La funzione seguente per prima cosa chiede all'utente se vuole confermare l'eliminazione corrente e, # in caso di risposta affermativa, cancella la visita selezionata grazie all'id salvato nella variabile # 'visita_da_eliminare'. def disdici_visita(self): conferma = QMessageBox.question(self, "Conferma", "Sei sicuro di voler disdire?", QMessageBox.Yes, QMessageBox.No) if conferma == QMessageBox.Yes: self.controller.disdici_visita(self.visita_da_eliminare) self.home = VistaHomeMedico.VistaHomeMedico() self.home.show() self.close() else: return # == go_back == # La funzione si occupa di aprire la finestra precedente. def go_back(self): self.go_home = VistaHomeMedico.VistaHomeMedico() self.go_home.show() self.close()
def __init__(self, parent=None): super(VistaDisdiciVisitaMedica, self).__init__(parent) self.controller = ControllerListaVisiteMediche() # Inserisce in lista_visite le informazioni del file 'lista_visite.pickle'. self.stylesheet_frame = """ QFrame{ background-color: white; border: 1px solid grey; } """ self.stylesheet_window = """ QWidget{ background-color: #dfdfdf; } """ self.stylesheet_label = """ QLabel{ background-color: transparent; } QComboBox{ background-color: white; border: 1px solid grey; color: black; } """ self.stylesheet_button_back = """ QPushButton{ border-radius: 15px; background-color: transparent; } QPushButton::Pressed{ background-color:transparent; } """ self.stylesheet_button = """ QPushButton{ background-color: #cc3234; color: white; border-radius: 15px; } QPushButton::Pressed{ background-color: grey } """ self.imagePath = "Image/foto.png" self.image = QImage(self.imagePath) self.label = QLabel(self) self.label.setPixmap(QPixmap.fromImage(self.image)) self.label.setScaledContents(True) self.label.setGeometry(0, 0, 700, 500) # Inserimento e impostazioni grafiche dell'etichetta 'Disdici Visita'. self.label_titolo = QLabel(self) self.font_titolo = QFont("Arial", 18, QFont.Bold) self.label_titolo.setText("Disdici Visita") self.label_titolo.setFont(self.font_titolo) self.label_titolo.setStyleSheet(self.stylesheet_label) self.label_titolo.setGeometry(50, 55, 300, 40) # Inserimento e impostazioni grafiche del frame nella finestra. self.frame = QFrame(self) self.frame.setStyleSheet(self.stylesheet_frame) self.frame.setGeometry(50, 100, 600, 250) # Inserimento e impostazioni grafiche dell'etichetta 'Selezionare la visita'. self.label_id = QLabel(self) self.font_id = QFont("Times", 9) self.label_id.setFont(self.font_id) self.label_id.setText("Selezionare la visita") self.label_id.setGeometry(60, 190, 160, 30) self.label_id.setStyleSheet(self.stylesheet_label) # Inserimento e impostazioni grafiche del menù a tendina contenente le visite contenute nella # lista_visite. Inoltre la visita selezionata nel menù viene salvata nella variabile # 'visita_da_eliminare'. self.selezione_visita = QComboBox(self) for visita in self.controller.get_lista_visite(): self.controller_visita = ControllerVisitaMedica(visita) if self.controller_visita.get_esito() == "None": self.selezione_visita.addItem( self.controller_visita.get_cliente() + " - " + self.controller_visita.get_data()) nome = self.selezione_visita.currentText().split("-") for visita in self.controller.get_lista_visite(): self.controller_visita = ControllerVisitaMedica(visita) if nome[0].strip() == self.controller_visita.get_cliente( ) and self.controller_visita.get_esito() == "None": self.visita_da_eliminare = visita self.selezione_visita.setGeometry(250, 190, 300, 30) self.selezione_visita.setStyleSheet(self.stylesheet_label) # Inserimento e impostazioni grafiche del bottone per confermare la rimozione della visita. self.button_rimuovi = QPushButton(self) self.button_rimuovi.setText("Rimuovi") self.font_button = QFont("Times", 11) self.button_rimuovi.setFont(self.font_button) self.button_rimuovi.setGeometry(525, 410, 120, 50) self.button_rimuovi.setStyleSheet(self.stylesheet_button) self.button_rimuovi.clicked.connect(self.disdici_visita) # Inserimento e impostazioni grafiche del bottone per tornare alla vista precedente. self.button_back = QPushButton(self) self.button_back.setIcon(QIcon('Image/back.png')) self.button_back.setIconSize(QSize(60, 60)) self.button_back.setGeometry(50, 390, 90, 90) self.button_back.setStyleSheet(self.stylesheet_button_back) self.button_back.clicked.connect(self.go_back) # Impostazioni grafiche generali della finestra del programma. self.setWindowTitle("Disdici Visita") self.setStyleSheet(self.stylesheet_window) self.resize(700, 500) self.setFixedSize(self.size())
class VistaListaVisiteMediche(QWidget): # Apre la vista che visualizza la lista delle visite mediche. def __init__(self, parent=None): super(VistaListaVisiteMediche, self).__init__(parent) self.controller = ControllerListaVisiteMediche() self.controller_clienti = ControllerListaClienti() # Inserisce in lista_visite le informazioni della 'lista-visite.json'. # Se la lista è vuota l'utente è notificato con un messaggio di errore. self.stylesheet_label = """ QLabel{ background-color: #99cbff; border: 1px solid #dfdfdf; } """ self.stylesheet_window = """ QWidget{ background-color: #dfdfdf } """ self.stylesheet_button_back = """ QPushButton{ border-radius: 15px; background-color: transparent; } QPushButton::Pressed{ background-color: transparent; } """ self.stylesheet_button = """ QPushButton{ background-color: #cc3234; color: white; border-radius: 15px; } QPushButton::Pressed{ background-color: grey } """ self.stylesheet_table = """ QTableWidget{ background-color: white; } """ self.imagePath = "Image/foto.png" self.image = QImage(self.imagePath) self.label = QLabel(self) self.label.setPixmap(QPixmap.fromImage(self.image)) self.label.setScaledContents(True) self.label.setGeometry(0, 0, 1250, 750) # Inserimento della tabella e intestazione delle colonne. self.table = QTableWidget(self) self.table.setColumnCount(5) self.table.setRowCount(1) self.table.setItem(0, 0, QTableWidgetItem("ID")) self.table.setItem(0, 1, QTableWidgetItem("Cliente")) self.table.setItem(0, 2, QTableWidgetItem("Data visita")) self.table.setItem(0, 3, QTableWidgetItem("Descrizione")) self.table.setItem(0, 4, QTableWidgetItem("Esito")) self.set_data() # Inserisce nella tabella i dati contenuti nella lista_visite. # Impostazioni grafiche della tabella. self.table.setGeometry(70, 50, 1100, 550) self.table.setStyleSheet(self.stylesheet_table) self.table.horizontalHeader().setStretchLastSection(True) self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) self.table.horizontalHeader().hide() self.table.horizontalScrollBar().setDisabled(True) self.table.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.table.verticalHeader().hide() self.table.setEditTriggers(self.table.NoEditTriggers) self.table.setSelectionMode(self.table.NoSelection) self.table.setFocusPolicy(Qt.NoFocus) # Inserimento e impostazioni grafiche del bottone per tornare alla vista precedente. self.button_back = QPushButton(self) self.button_back.setIcon(QIcon('Image/back.png')) self.button_back.setIconSize(QSize(90, 90)) self.button_back.setGeometry(70, 630, 90, 90) self.button_back.setStyleSheet(self.stylesheet_button_back) self.button_back.clicked.connect(self.go_back) # Inserimento e impostazioni grafiche del bottone per inserire una nuova prenotazione # per una visita medica. self.button_new_visita = QPushButton(self) self.button_new_visita.setText("Prenota Visita") self.font_button = QFont("Times", 11) self.button_new_visita.setFont(self.font_button) self.button_new_visita.setGeometry(980, 650, 190, 50) self.button_new_visita.setStyleSheet(self.stylesheet_button) self.button_new_visita.clicked.connect(self.go_new_visita) # Impostazioni grafiche generali della finestra del programma. self.setWindowTitle("Lista Visite Mediche") self.resize(1250, 750) self.setFixedSize(self.size()) self.setStyleSheet(self.stylesheet_window) # == set_data == # La funzione si occupa di salvare le informazioni relative alle prenotazioni e contenute nel file # 'lista_visite.pickle' nella tabella della VistaListaVisiteMediche. def set_data(self): self.icon_no = QIcon("Image/no.png") self.icon_si = QIcon("Image/si.png") self.no = QTableWidgetItem() self.no.setIcon(self.icon_no) self.si = QTableWidgetItem() self.si.setIcon(self.icon_si) i = 1 n_righe = len(self.controller.get_lista_visite()) self.table.setRowCount(n_righe + 1) for visita in self.controller.get_lista_visite(): self.controller_visita = ControllerVisitaMedica(visita) self.table.setItem(i, 0, QTableWidgetItem(self.controller_visita.get_id())) self.table.setItem(i, 1, QTableWidgetItem(self.controller_visita.get_cliente())) self.table.setItem(i, 2, QTableWidgetItem(self.controller_visita.get_data())) if self.controller_visita.get_descrizione() == "None": self.table.setItem(i, 3, QTableWidgetItem(self.no)) else: self.table.setItem(i, 3, QTableWidgetItem(self.controller_visita.get_descrizione())) if self.controller_visita.get_esito() == "None": self.table.setItem(i, 4, QTableWidgetItem(self.no)) else: self.table.setItem(i, 4, QTableWidgetItem(self.controller_visita.get_esito())) i = i + 1 # == go_new_visita == # La funzione si occupa di aprire la VistaPrenotaVisitaMedica. def go_new_visita(self): trovato = False for cliente in self.controller_clienti.get_lista_clienti(): self.controller_cliente = ControllerCliente(cliente) if self.controller_cliente.get_visita_medica() == "None": trovato = True if not trovato: QMessageBox.critical(self, "Attenzione", "Nessun cliente disponibile per prenotarsi", QMessageBox.Ok) return else: self.vista_nuovo_dipendente = VistaPrenotaVisitaMedica.VistaPrenotaVisitaMedica() self.vista_nuovo_dipendente.show() self.close() # == go_back == # La funzione si occupa di aprire la finestra precedente. def go_back(self): self.go_home = VistaHomeMedico.VistaHomeMedico() self.go_home.show() self.close()
def __init__(self, parent=None): super(VistaInserisciEsitoVisita, self).__init__(parent) self.controller = ControllerListaVisiteMediche() self.controller_clienti = ControllerListaClienti() self.stylesheet_window = """ QWidget{ background-color: #efefef; } """ self.stylesheet_label = """ QLabel{ background-color: transparent; } QComboBox{ background-color: white; border: 1px solid grey; color: black; } QLineEdit{ background-color: white; border: 2px solid #dfdfdf } QTextEdit{ background-color: white; border: 2px solid #dfdfdf } """ self.stylesheet_frame = """ QFrame{ border-radius: 15px; background-color: white; border: 2px solid #efefef; } """ self.stylesheet_button = """ QPushButton{ background-color: #cc3234; color: white; border-radius: 15px; } QPushButton::Pressed{ background-color: grey } """ self.stylesheet_button_back = """ QPushButton{ border-radius: 15px; background-color: transparent; } QPushButton::Pressed{ background-color: transparent; } """ # Inserimento e impostazioni grafiche dell'immagine dello sfondo della finestra. self.imagePath = "Image/foto.png" self.image = QImage(self.imagePath) self.label = QLabel(self) self.label.setPixmap(QPixmap.fromImage(self.image)) self.label.setScaledContents(True) self.label.setGeometry(0, 0, 1000, 450) # Inserimento e impostazioni grafiche dell'etichetta 'Inserisci Dati Esito'. self.label = QLabel(self) self.font = QFont("Arial", 18, QFont.Bold) self.label.setText("Inserisci Dati Esito") self.label.setFont(self.font) self.label.setStyleSheet(self.stylesheet_label) self.label.setGeometry(50, 55, 400, 40) # Inserimento e impostazioni grafiche del frame nella finestra. self.frame = QFrame(self) self.frame.setStyleSheet(self.stylesheet_frame) self.frame.setGeometry(50, 100, 900, 250) self.create_label("Seleziona cliente", 150) self.create_label("Descrizione", 250) # Inserimento e impostazioni grafiche del menù a tendina contenente la lista dei clienti. # La colonna dell'esito della visita potrà essere modificata solamente se il cliente # non ha ancora effettuato la visita e quindi non è presente alcun valore su 'Esito'. self.edit_cf_cliente = QComboBox(self) for visita in self.controller.get_lista_visite(): self.controller_visita = ControllerVisitaMedica(visita) if self.controller_visita.get_esito() == "None": self.edit_cf_cliente.addItem( self.controller_visita.get_cliente() + " - " + self.controller_visita.get_data()) self.edit_cf_cliente.setGeometry(250, 150, 250, 30) self.edit_cf_cliente.setStyleSheet(self.stylesheet_label) # Inserimento e impostazioni grafiche della casella di testo. self.edit_descrizione = QTextEdit(self) self.edit_descrizione.setGeometry(250, 250, 200, 50) self.edit_descrizione.setStyleSheet(self.stylesheet_label) # Inserimento e impostazioni grafiche dell'etichetta 'Esito'. self.label_edit = QLabel(self) self.label_edit.setText("Esito") self.label_edit.setGeometry(600, 150, 60, 20) self.label_edit.setStyleSheet(self.stylesheet_label) self.font_label = QFont("Times", 9) self.label_edit.setFont(self.font_label) # Inserimento e impostazioni grafiche del menù a tendina per selezionare l'esito della visita. self.edit_esito = QComboBox(self) self.edit_esito.addItem("IDONEO") self.edit_esito.addItem("NON IDONEO") self.edit_esito.setGeometry(670, 150, 110, 20) self.edit_esito.setStyleSheet(self.stylesheet_label) # Inserimento e impostazioni grafiche del bottone per confermare l'inserimento dell'esito. self.button_ricevuta = QPushButton(self) self.button_ricevuta.setText("Inserisci esito") self.font_button = QFont("Times", 11) self.button_ricevuta.setFont(self.font_button) self.button_ricevuta.setGeometry(800, 375, 150, 50) self.button_ricevuta.setStyleSheet(self.stylesheet_button) self.button_ricevuta.clicked.connect(self.go_ricevuta) # Inserimento e impostazioni grafiche del bottone per tornare alla vista precedente. self.button_back = QPushButton(self) self.button_back.setIcon(QIcon('Image/back.png')) self.button_back.setIconSize(QSize(65, 65)) self.button_back.setGeometry(20, 375, 150, 50) self.button_back.setStyleSheet(self.stylesheet_button_back) self.button_back.clicked.connect(self.go_back) # Impostazioni grafiche generali della finestra del programma. self.setWindowTitle("Inserisci Esito") self.setStyleSheet(self.stylesheet_window) self.resize(1000, 450) self.setFixedSize(self.size())
class VistaInserisciEsitoVisita( QWidget ): # Apre la vista che consente al medico di inserire l'esito di una visita. def __init__(self, parent=None): super(VistaInserisciEsitoVisita, self).__init__(parent) self.controller = ControllerListaVisiteMediche() self.controller_clienti = ControllerListaClienti() self.stylesheet_window = """ QWidget{ background-color: #efefef; } """ self.stylesheet_label = """ QLabel{ background-color: transparent; } QComboBox{ background-color: white; border: 1px solid grey; color: black; } QLineEdit{ background-color: white; border: 2px solid #dfdfdf } QTextEdit{ background-color: white; border: 2px solid #dfdfdf } """ self.stylesheet_frame = """ QFrame{ border-radius: 15px; background-color: white; border: 2px solid #efefef; } """ self.stylesheet_button = """ QPushButton{ background-color: #cc3234; color: white; border-radius: 15px; } QPushButton::Pressed{ background-color: grey } """ self.stylesheet_button_back = """ QPushButton{ border-radius: 15px; background-color: transparent; } QPushButton::Pressed{ background-color: transparent; } """ # Inserimento e impostazioni grafiche dell'immagine dello sfondo della finestra. self.imagePath = "Image/foto.png" self.image = QImage(self.imagePath) self.label = QLabel(self) self.label.setPixmap(QPixmap.fromImage(self.image)) self.label.setScaledContents(True) self.label.setGeometry(0, 0, 1000, 450) # Inserimento e impostazioni grafiche dell'etichetta 'Inserisci Dati Esito'. self.label = QLabel(self) self.font = QFont("Arial", 18, QFont.Bold) self.label.setText("Inserisci Dati Esito") self.label.setFont(self.font) self.label.setStyleSheet(self.stylesheet_label) self.label.setGeometry(50, 55, 400, 40) # Inserimento e impostazioni grafiche del frame nella finestra. self.frame = QFrame(self) self.frame.setStyleSheet(self.stylesheet_frame) self.frame.setGeometry(50, 100, 900, 250) self.create_label("Seleziona cliente", 150) self.create_label("Descrizione", 250) # Inserimento e impostazioni grafiche del menù a tendina contenente la lista dei clienti. # La colonna dell'esito della visita potrà essere modificata solamente se il cliente # non ha ancora effettuato la visita e quindi non è presente alcun valore su 'Esito'. self.edit_cf_cliente = QComboBox(self) for visita in self.controller.get_lista_visite(): self.controller_visita = ControllerVisitaMedica(visita) if self.controller_visita.get_esito() == "None": self.edit_cf_cliente.addItem( self.controller_visita.get_cliente() + " - " + self.controller_visita.get_data()) self.edit_cf_cliente.setGeometry(250, 150, 250, 30) self.edit_cf_cliente.setStyleSheet(self.stylesheet_label) # Inserimento e impostazioni grafiche della casella di testo. self.edit_descrizione = QTextEdit(self) self.edit_descrizione.setGeometry(250, 250, 200, 50) self.edit_descrizione.setStyleSheet(self.stylesheet_label) # Inserimento e impostazioni grafiche dell'etichetta 'Esito'. self.label_edit = QLabel(self) self.label_edit.setText("Esito") self.label_edit.setGeometry(600, 150, 60, 20) self.label_edit.setStyleSheet(self.stylesheet_label) self.font_label = QFont("Times", 9) self.label_edit.setFont(self.font_label) # Inserimento e impostazioni grafiche del menù a tendina per selezionare l'esito della visita. self.edit_esito = QComboBox(self) self.edit_esito.addItem("IDONEO") self.edit_esito.addItem("NON IDONEO") self.edit_esito.setGeometry(670, 150, 110, 20) self.edit_esito.setStyleSheet(self.stylesheet_label) # Inserimento e impostazioni grafiche del bottone per confermare l'inserimento dell'esito. self.button_ricevuta = QPushButton(self) self.button_ricevuta.setText("Inserisci esito") self.font_button = QFont("Times", 11) self.button_ricevuta.setFont(self.font_button) self.button_ricevuta.setGeometry(800, 375, 150, 50) self.button_ricevuta.setStyleSheet(self.stylesheet_button) self.button_ricevuta.clicked.connect(self.go_ricevuta) # Inserimento e impostazioni grafiche del bottone per tornare alla vista precedente. self.button_back = QPushButton(self) self.button_back.setIcon(QIcon('Image/back.png')) self.button_back.setIconSize(QSize(65, 65)) self.button_back.setGeometry(20, 375, 150, 50) self.button_back.setStyleSheet(self.stylesheet_button_back) self.button_back.clicked.connect(self.go_back) # Impostazioni grafiche generali della finestra del programma. self.setWindowTitle("Inserisci Esito") self.setStyleSheet(self.stylesheet_window) self.resize(1000, 450) self.setFixedSize(self.size()) # == create_label == # La funzione crea un etichetta con nome inserito in input alla funzione e posizione nella finestra # presa anch'essa in input. La funzione gestisce anche le impostazioni grafiche dell'etichetta. def create_label(self, nome, posizione): self.label_edit = QLabel(self) self.label_edit.setText(nome) self.label_edit.setGeometry(80, posizione, 110, 20) self.label_edit.setStyleSheet(self.stylesheet_label) self.font_label = QFont("Times", 9) self.label_edit.setFont(self.font_label) # == go_ricevuta == # La funzione salva nella variabile 'nome' il cliente selezionato e successivamente, dopo aver controllato se il # cliente è presente nella lista_clienti, lo salva in cliente_visitato. Se non è presente un pagamento iniziale # mandato un messaggio di errore, altrimenti viene salvata in 'lista_visite.pickle' una nuova visita con le # informazioni relative. Infine la funzione rimanda alla VistaListaVisiteMediche. def go_ricevuta(self): nome = self.edit_cf_cliente.currentText().split("-") for cliente in self.controller_clienti.get_lista_clienti(): self.controller_cliente = ControllerCliente(cliente) if self.controller_cliente.get_nome( ) + " " + self.controller_cliente.get_cognome() == nome[0].strip(): self.controller_cliente.set_visita_medica("Effettuato") self.cliente_visitato = cliente self.controller_clienti.save_data() if self.cliente_visitato.get_pagamento_iniziale() == "None": QMessageBox.critical(self, "Errore", "Il cliente non ha pagato la rata iniziale!", QMessageBox.Ok) else: for visita in self.controller.get_lista_visite(): self.controller_visita = ControllerVisitaMedica(visita) if self.controller_visita.get_cliente() == nome[0].strip(): self.controller_visita.set_descrizione( self.edit_descrizione.toPlainText()) self.controller_visita.set_esito( self.edit_esito.currentText()) self.controller.save_data() QMessageBox.information(self, "Confermato", "Esito aggiunto al sistema", QMessageBox.Ok) self.go_pagamenti = VistaListaVisiteMediche.VistaListaVisiteMediche() self.go_pagamenti.show() self.close() # == go_back == # La funzione si occupa di aprire la finestra precedente. def go_back(self): self.go_lista_pagamenti = VistaListaVisiteMediche.VistaListaVisiteMediche( ) self.go_lista_pagamenti.show() self.close()
class VistaHomeMedico( QWidget ): # Apre e visualizza la vista home con le funzioni consentite al medico. def __init__(self, parent=None): super(VistaHomeMedico, self).__init__(parent) self.controller = ControllerListaVisiteMediche() self.stylesheet_toolbutton = """ QToolButton{ background-color: white; border: 1px solid #9c9c9c; border-radius: 10px; } QToolButton::Pressed{ background-color: grey; } """ self.stylesheet_button = """ QPushButton{ border-radius: 15px; background-color: salmon; color: black; } QPushButton::pressed{ background-color: transparent; } """ # Inserimento e impostazioni grafiche dell'immagine dello sfondo della finestra. self.imagePath = "Image/foto.png" self.image = QImage(self.imagePath) self.label = QLabel(self) self.label.setPixmap(QPixmap.fromImage(self.image)) self.label.setScaledContents(True) self.label.setGeometry(0, 0, 800, 600) # Il seguente blocco crea le azioni che saranno svolte dai bottoni, i bottoni # che saranno presenti sulla schermata e i collegamenti tra i due. self.action_visita = QAction() self.action_esiti = QAction() self.action_disdetta = QAction() self.create_button('Image/dottore.png', 'Lista prenotazioni', 110, self.action_visita) self.create_button('Image/esito.png', 'Esito visita', 310, self.action_esiti) self.create_button('Image/disdici_visita.png', 'Disdici visita', 510, self.action_disdetta) self.action_visita.triggered.connect(self.go_visita) self.action_esiti.triggered.connect(self.go_esiti) self.action_disdetta.triggered.connect(self.go_disdici) # == create_button == # La funzione crea i bottoni che saranno presenti sulla schermata prendendo per input # il path dell immagine che rappresenterà il bottone, il suo nome, la posizione che avrà nella # schermata e quale azione dovrà compiere una volta premuto. # La funzione si occupa dei bottoni anche dal punto di vista grafico. def create_button(self, path_img, nome, posizione, action): self.button = QToolButton(self) self.button.setToolButtonStyle(Qt.ToolButtonTextUnderIcon) font_button = QFont("Times", 11) self.button.setFont(font_button) self.button.setGeometry(posizione, 200, 180, 80) action.setIcon(QIcon(path_img)) action.setText(nome) self.button.setIconSize(QSize(50, 50)) self.button.setDefaultAction(action) self.button.setStyleSheet(self.stylesheet_toolbutton) self.setWindowTitle("Home Medico") self.resize(800, 500) self.setFixedSize(self.size()) # == go_visita == # La funzione si occupa di aprire la VistaListaVisiteMediche # presa dal file 'lista_visite.pickle'. def go_visita(self): self.prenota_visita = VistaListaVisiteMediche() self.prenota_visita.show() self.close() # == go_esiti == # Questa funzione consente di aprire la VistaInserisciEsitoVisita che consente # al medico di inserire l'esito di una visita medica. Viene anche fatto un controllo # sulla lista: se la 'lista-visite.json' non contiene elementi viene inviato un # messaggio di errore. def go_esiti(self): trovato = False if self.controller.get_lista_visite(): for visita in self.controller.get_lista_visite(): self.controller_visita = ControllerVisitaMedica(visita) if self.controller_visita.get_descrizione() == "None": trovato = True self.go_esito = VistaInserisciEsitoVisita() self.go_esito.show() self.close() if not trovato: QMessageBox.critical( self, "Errore", "Nessuna prenotazione nel sistema nel sistema", QMessageBox.Ok) else: QMessageBox.critical( self, "Errore", "Nessuna prenotazione nel sistema nel sistema", QMessageBox.Ok) # == go_disdici == # Questa funzione consente di aprire la VistaDisdiciVisitaMedica. Viene anche fatto # un controllo su 'lista-visita.json': se il file è vuoto viene inviato un messaggio # di errore all'utente. def go_disdici(self): if self.controller.get_lista_visite(): for visita in self.controller.get_lista_visite(): self.controller_visita = ControllerVisitaMedica(visita) if self.controller_visita.get_esito() != "None": QMessageBox.critical(self, "Errore", "Nessuna prenotazione nel sistema", QMessageBox.Ok) else: self.go_disdire = VistaDisdiciVisitaMedica() self.go_disdire.show() self.close() else: QMessageBox.critical(self, "Errore", "Nessuna prenotazione nel sistema", QMessageBox.Ok)