Пример #1
0
class mainwindow(QWidget):
    def __init__(self, data_path, parent=None):
        super(mainwindow, self).__init__(parent)

        folders = os.listdir(data_path)

        self.mainLayout = QGridLayout(self)
        self.btn_layout = QGridLayout()
        self.buttons = []
        for num, folder in enumerate(folders):
            i = num % 4
            j = num // 4
            folder_button = QPushButton(folder)
            self.buttons.append(folder_button)
            self.btn_layout.addWidget(folder_button, j, i)
            folder_button.setFixedSize(200, 30)
            folder_button.clicked.connect(partial(self.dispatcher, folder))

        self.main_minue = QPushButton("back")
        self.btn_layout.addWidget(self.main_minue, 0, 0)
        self.main_minue.setFixedSize(200, 30)
        self.main_minue.hide()
        self.main_minue.clicked.connect(partial(self.main_layout, folder))

        self.projectView = QTableView()
        self.mainLayout.addWidget(self.projectView, 1, 0)
        self.projectView.showMaximized()
        self.projectView.hide()

        self.listWidget = QListWidget(self)
        self.mainLayout.addWidget(self.listWidget, 1, 0)
        self.listWidget.hide()

        self.status_push = QPushButton("Status")
        self.btn_layout.addWidget(self.status_push, 0, 2)
        self.status_push.setFixedSize(200, 30)
        self.status_push.hide()

        self.search_push = QPushButton("Search")
        self.btn_layout.addWidget(self.search_push, 0, 1)
        self.search_push.setFixedSize(200, 30)
        self.search_push.hide()
        self.search_push.clicked.connect(partial(self.search_fn, folder))

        self.search_counter = 0
        txt = "please entre search text"
        self.search_lable = QLabel(txt)
        self.btn_layout.setContentsMargins(0, 0, 0, 0)
        self.btn_layout.addWidget(self.search_lable, 1, 0)
        self.search_lable.setFixedSize(200, 30)
        self.search_lable.hide()

        self.comboBox = QComboBox()
        self.comboBox.setObjectName(("comboBox"))
        self.btn_layout.addWidget(self.comboBox, 1, 2)

        self.comboBox.hide()

        self.search_line_edit = QLineEdit(self)
        self.btn_layout.addWidget(self.search_line_edit, 1, 1)
        self.search_line_edit.hide()

        self.search_line_edit.setFixedSize(200, 30)

        self.status_push.clicked.connect(self.show_status)

        self.back_push = QPushButton("Back")
        self.back_push.clicked.connect(partial(self.close_all, folder))
        self.back_push.setFixedSize(200, 30)

        self.show_report = QPushButton("Show Report")
        self.show_report.clicked.connect(self.get_report)
        self.show_report.setFixedSize(200, 30)

        self.btn_layout.addWidget(self.back_push, 0, 0)
        self.btn_layout.addWidget(self.show_report, 0, 1)

        self.mainLayout.addLayout(self.btn_layout, 0, 0)

        self.back_push.hide()
        self.show_report.hide()

        self.setGeometry(0, 0, 1000, 1000)

        self.imageLabel = QLabel(self)
        self.imageLabel.hide()
        self.setWindowTitle("Stations")

        self.mainLayout.addWidget(self.imageLabel, 1, 0)

    def search_fn(self, folder):
        filename = main_path + "/" + folder + "/" + folder + ".xls"
        df = pd.read_excel(filename)
        header = list(df)
        for h in header:
            self.comboBox.addItem(h)
        if self.search_counter == 0:
            self.search_line_edit.show()
            self.comboBox.show()
            self.search_counter += 1
        else:
            txt = self.search_line_edit.text()
            self.search_lable.hide()
            if txt == "":
                self.search_lable.show()

            else:
                self.search_counter = 2
                df = df.replace(np.nan, '', regex=True)
                df = df.applymap(str)
                h = str(self.comboBox.currentText())
                df1 = df[df[h].str.contains(txt)]
                tmp_filename = "tmp/tmp.csv"
                df1.to_csv(tmp_filename, index=False)
                self.show_table(tmp_filename)

    def main_layout(self, folder):
        if self.search_counter == 1:
            self.search_counter = 0
            self.search_line_edit.hide()
            self.search_line_edit.setText("")
            self.search_lable.hide()
            self.comboBox.hide()
        elif self.search_counter == 2:
            self.dispatcher(folder)
            self.search_counter = 1
            self.search_line_edit.setText("")
        else:

            self.setWindowTitle("Stations")
            self.projectView.hide()
            self.status_push.hide()
            self.search_push.hide()

            for folder in self.buttons:
                folder.show()
            self.main_minue.hide()

    def dispatcher(self, folder):
        filename = main_path + "/" + folder + "/" + folder + ".xls"
        # self.filename = filename
        self.setWindowTitle(folder + "  Stations")
        self.show_table(filename)

    def show_status(self):

        labels = 'Done', 'half year target'
        sizes = [35, 65]
        explode = (0.1, 0.0)

        fig1, ax1 = plt.subplots()
        ax1.pie(sizes,
                explode=explode,
                labels=labels,
                autopct='%1.1f%%',
                shadow=True,
                startangle=90)
        ax1.axis('equal')

        plt.show()

    def get_report(self):
        image_name = str(self.record[-1]) + ".jpg"

        if image_name in os.listdir("reports"):
            image_path = "reports" + "/" + image_name
            image = QtGui.QImage(image_path)

            self.qpixmap = QtGui.QPixmap.fromImage(image)
            self.imageLabel.setPixmap(self.qpixmap)

        else:
            img = Image.new('RGB', (700, 600), (0, 0, 0))

            draw = ImageDraw.Draw(img)
            draw.text((60, 250),
                      "No Photo To Display for station number " +
                      str(self.record[-1]),
                      fill='rgb(255, 255, 255)',
                      font=ImageFont.truetype(
                          "/usr/share/fonts/dejavu/DejaVuSans.ttf", 25))

            img = img.convert("RGBA")
            data = img.tobytes("raw", "RGBA")

            qim = QtGui.QImage(data, img.size[0], img.size[1],
                               QtGui.QImage.Format_ARGB32)
            pix = QtGui.QPixmap.fromImage(qim)

            self.imageLabel.setPixmap(pix)

        self.listWidget.clear()
        self.listWidget.close()
        self.show_report.hide()
        self.imageLabel.show()
        self.main_minue.hide()

    def show_table(self, filename):
        self.projectModel = PandasModel(filename)

        self.projectView.setModel(self.projectModel)

        self.projectView.doubleClicked.connect(self.show_details)
        self.projectView.show()
        self.status_push.show()
        self.search_push.show()
        self.main_minue.show()
        for folder in self.buttons:
            folder.hide()

    def show_details(self, clickedIndex):

        self.projectView.hide()
        self.status_push.hide()
        self.search_push.hide()
        self.search_line_edit.hide()
        self.search_lable.hide()
        self.comboBox.hide()
        self.main_minue.hide()
        df = self.projectModel._data
        header = list(df)
        self.record = df.values.tolist()[clickedIndex.row()]

        self.listWidget.clear()
        self.listWidget.show()
        self.back_push.show()
        self.show_report.show()

        txt = ""
        for h, d in zip(header, self.record):
            txt += str(h) + ": " + str(d) + "\n\n"

        it = QListWidgetItem(txt)

        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(200)
        font.setPointSize(12)
        it.setFont(font)
        it.setBackground(QtGui.QBrush(QtGui.QColor("lightblue")))
        it.setTextAlignment(Qt.AlignRight)

        self.listWidget.addItem(it)

    def close_all(self, folder):
        self.search_line_edit.clear()
        self.search_counter = 0
        self.listWidget.clear()
        self.listWidget.close()
        self.back_push.hide()
        self.show_report.hide()
        self.imageLabel.hide()
        filename = main_path + "/" + folder + "/" + folder + ".xls"
        self.show_table(filename)
Пример #2
0
class GUI:
    database = "NULL"
    testme = []
    tabs = []
    __active = None
    edit = None
    new = None
    version = "alpha"

    def __init__(self):
        self.MainWindowApp = QtWidgets.QApplication(sys.argv)
        self.__setPalette()
        self.MainWindow = QtWidgets.QMainWindow()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self.MainWindow)
        self.onTriggerHook()
        self.MainWindowApp.lastWindowClosed.connect(self.exit)
        self.MainWindow.show()
        sys.exit(self.MainWindowApp.exec_())

    def __del__(self):
        logging.info("Bye")
        if self.database != "NULL":
            self.database.closeConnection()
            self.database = "NULL"
        else:
            pass
        self.__setActive(None)
        self.MainWindowApp.quit()

    def __setPalette(self):
        dark_stylesheet = qdarkstyle.load_stylesheet_pyqt5()
        self.MainWindowApp.setStyleSheet(dark_stylesheet)

    def onTriggerHook(self):
        self.ui.actionExit.triggered.connect(lambda: self.exit())
        self.ui.actiondatabase.triggered.connect(lambda: self.fileNameOpen())
        self.ui.menuImport.triggered.connect(lambda: self.importData())
        self.ui.actionNew.triggered.connect(lambda: self.createNew())
        self.ui.actionSave.triggered.connect(lambda: self.saveChanges())
        self.ui.actionVersion.triggered.connect(lambda: self.popupHelp())
        self.ui.actionEdit.triggered.connect(lambda: self.dbEdit())

    def fileNameOpen(self):
        if self.database == "NULL":
            currentPath = pathlib.Path().absolute()
            self.fileName = QtWidgets.QFileDialog()
            opentFileName = self.fileName.getOpenFileName(
                self.fileName, "Open File", str(currentPath),
                "Database Files (*.db)")
            if str(opentFileName[0]) != "":
                self.database = Word(str(opentFileName[0]))
                self.plotDatabase()
        else:
            logging.info("Database exist!")

    def dbEdit(self):
        if self.database != "NULL":
            if self.__active == self.ui.graphicWidget:
                self.plotDatabaseClose()
            self.edit = DataEdit(self.database)
            self.MainWindow.setCentralWidget(self.edit.tabs)
            self.__setActive(self.edit)

    def saveChanges(self):
        if issubclass(self.__active.__class__, DataView):
            _deleted = self.__active.getDeleted()
            if len(_deleted) != 0:
                self.database.deleteRecords(_deleted)
            else:
                logging.info("Nothing to delete!")
            self.database.insertRecords(self.__active.getEdited())
        else:
            logging.info("Nothing to be saved")

    def createNew(self):
        if self.__active == self.ui.graphicWidget:
            self.plotDatabaseClose()
        if self.database != "NULL":
            self.newLecture()
        else:
            self.newDatabase()

    def newLecture(self):
        if self.__active == self.edit:
            self.edit.addLecture()

    def newLecture_obsolete(self):
        if self.database != "NULL":
            self.new = NewSection()
            self.MainWindow.setCentralWidget(self.new.tabs)
            self.__setActive(self.new)
            self.new.tabs.show()

    def newDatabase(self):
        logging.debug("New database!")
        if self.__newDatabaseFile():
            self.new = DataNew(self.database)
            self.MainWindow.setCentralWidget(self.new.tabs)
            self.__setActive(self.new)
            self.new.tabs.show()

    def __newDatabaseFile(self):
        if self.database != "NULL":
            del self.database
            self.database = "NULL"
        currentPath = pathlib.Path().absolute()
        self.newFile = QtWidgets.QFileDialog()
        opentFileName = self.newFile.getSaveFileName(self.newFile, "Save File",
                                                     "newDtabase",
                                                     "Database Files (*.db)")
        if str(opentFileName[0]) != "":
            logging.info("Created new file")
            self.database = Word(str(opentFileName[0]))
            return True

    def plotDatabase(self):
        self.ui.graphicWidget = pg.PlotWidget()
        self.MainWindow.setCentralWidget(self.ui.graphicWidget)
        self.__setActive(self.ui.graphicWidget)
        self.ui.graphicWidget.setTitle("Test Plot", color="w", size="8pt")
        self.ui.graphicWidget.setLabel('left', 'Origins', units='')
        self.ui.graphicWidget.setLabel('bottom', 'Weeks', units='')
        self.ui.graphicWidget.plot(self.__databaseGetRange(),
                                   self.__databaseShowProgress())

    def __databaseGetRange(self):
        weeks = list(range(0, (self.database.getLectureID() + 1)))
        return weeks

    def __databaseShowProgress(self):
        lectures = self.database.getLectureID()
        progress = []
        progress.append(0)
        for lectureID in range(1, lectures + 1):
            if lectureID < 2:
                progress.append(self.database.getLectureProgress(lectureID))
            else:
                progress.append(
                    self.database.getLectureProgress(lectureID) +
                    progress[lectureID - 1])
        return progress

    def plotDatabaseUpdate(self):
        if self.__active == self.ui.graphicWidget:
            self.ui.graphicWidget.plot(self.__databaseGetRange(),
                                       self.__databaseShowProgress())
        else:
            self.plotDatabase()

    def plotDatabaseClose(self):
        self.ui.graphicWidget.close()

    def plotBarDatabase(self):
        # plot data: x, y values
        self.ui.graphicWidget = pg.plot()
        self.ui.graphicWidget.setTitle("Test Plot", color="w", size="8pt")
        self.ui.graphicWidget.setLabel('left', 'Origins', units='')
        self.ui.graphicWidget.setLabel('bottom', 'Weeks', units='')
        bg1 = pg.BarGraphItem(x=self.__databaseGetRange(),
                              height=self.__databaseShowProgress(),
                              width=0.2,
                              brush='g')
        self.ui.graphicWidget.addItem(bg1)

    def importData(self):
        if self.database == "NULL":
            logging.warning("Open database first!")
        else:
            currentPath = pathlib.Path().absolute()
            self.fileName = QtWidgets.QFileDialog()
            opentFileName = self.fileName.getOpenFileName(
                self.fileName, "Import File", str(currentPath),
                "CSV Files (*.csv)")
            fileName = str(opentFileName[0])
            if os.path.isfile(fileName):
                self.database.importCSV(fileName)
            else:
                logging.warning("File " + str(fileName) + " does not exist!")
            self.plotDatabaseUpdate()

    def popupEdit(self):
        if self.database == "NULL":
            logging.warning("Open database first!")
        else:
            self.listwidget = QListWidget()
            for i in range(1, len(self.__databaseGetRange())):
                self.listwidget.insertItem(0, "Lecture " + str(i))
            self.listwidget.clicked.connect(self.clicked)
            self.listwidget.show()

    def popupHelp(self):
        helpWindow = QMessageBox()
        helpWindow.setWindowTitle("Help")
        helpWindow.setText(str(self.version))
        helpWindow.setIcon(QMessageBox.Information)
        helpWindow.setStandardButtons(QMessageBox.Ignore)
        if self.__active == self.edit:
            helpWindow.setInformativeText(
                "See details, for avilable commands!")
            helpWindow.setDetailedText("No details")
        elif self.__active == self.new:
            helpWindow.setInformativeText(
                "See details, for avilable commands!")
            helpWindow.setDetailedText(
                "- ctrl + R : Add new row\n- ctrl + delete : Delete marked rows"
            )
        else:
            if self.database == "NULL":
                helpWindow.setInformativeText(
                    "The database is not loaded.\nTo load database go to file and see options."
                )
            else:
                helpWindow.setInformativeText(
                    "The database is loaded.\nYou can edit the database and add a new data."
                )

        helpWindowHndler = helpWindow.exec_()

    def clicked(self):
        item = self.listwidget.currentItem()
        self.listwidget.close()

    def deleteData(self, lecture):
        # Add popup to edit (chosse the lecture id from list5 list )
        self.database.deleteLecturesRecords(lecture)
        self.plotDatabaseUpdate()

    def exit(self):
        logging.info("Exit")
        self.MainWindowApp.quit()

    def __setActive(self, active):
        self.__active = active
Пример #3
0
class mainwindow(QWidget):
    def __init__(self, fileName, parent=None):
        super(mainwindow, self).__init__(parent)

        self.zoom_count = 0
        self.zoom_flag = False

        self.CSV_fileName = fileName
        self.zoom_file_path = "photo_edit/zoom/temp.jpg"

        widget = QWidget()
        self.mainLayout = QGridLayout(widget)
        self.btn_layout = QGridLayout(self)
        self.push_layout = QGridLayout()

        self.Qtree = QTreeView()
        # self.Qtree.setStyleSheet('QTreeView {background-color: purple; color: white; border:5px;'
        #                          'border-style:outset;border-color: white;selection-color: yellow}')
        self.model = QtGui.QStandardItemModel(self)

        self.setWindowTitle("Main")
        self.setFixedSize(700, 550)

        self.Qtree.doubleClicked.connect(self.show_details)

        self.add_patient_pushbotton = QPushButton("Add New Patient")
        # self.add_patient_pushbotton.setStyleSheet('QPushButton {background-color:yellow;border-style:outset;'
        #                                           'border-width:5px;border-color: white}')
        self.add_patient_pushbotton.clicked.connect(self.add_patient)
        self.add_patient_pushbotton.setFixedSize(200, 30)

        self.zoom_in_push = QPushButton("Zoom In")
        # self.zoom_in_push.setStyleSheet('QPushButton {background-color:yellow;border-style:outset;'
        #                                           'border-width:2px;border-color: white}')
        self.zoom_in_push.clicked.connect(self.zoom)

        self.zoom_out_push = QPushButton("Zoom Out")
        # self.zoom_out_push.setStyleSheet('QPushButton {background-color:yellow;border-style:outset;'
        #                                           'border-width:2px;border-color: white}')
        self.zoom_out_push.clicked.connect(self.zoom)

        self.brightness_push = QPushButton("Brightness")
        # self.brightness_push.setStyleSheet('QPushButton {background-color:yellow;border-style:outset;'
        #                                           'border-width:2px;border-color: white}')
        self.brightness_push.clicked.connect(self.brightness)

        self.sharpness_push = QPushButton("Sharpness")
        # self.sharpness_push.setStyleSheet('QPushButton {background-color:yellow;border-style:outset;'
        #                                           'border-width:2px;border-color: white}')
        self.sharpness_push.clicked.connect(self.sharpness)

        self.color_push = QPushButton("Color")
        # self.color_push.setStyleSheet('QPushButton {background-color:yellow;border-style:outset;'
        #                                           'border-width:2px;border-color: white}')
        self.color_push.clicked.connect(self.color)

        self.reset_push = QPushButton("Reset")
        # self.reset_push.setStyleSheet('QPushButton {background-color:yellow;border-style:outset;'
        #                                           'border-width:2px;border-color: white}')
        self.reset_push.clicked.connect(self.reset)

        self.close_push = QPushButton("Close")
        # self.close_push.setStyleSheet('QPushButton {background-color:yellow;border-style:outset;'
        #                                           'border-width:2px;border-color: white}')
        self.close_push.clicked.connect(self.end)

        self.save_push = QPushButton("Add")
        # self.save_push.setStyleSheet('QPushButton {background-color:yellow;border-style:outset;'
        #                                           'border-width:2px;border-color: white}')
        self.save_push.clicked.connect(self.write_to_csv)
        self.save_push.setFixedSize(200, 30)

        self.back_push = QPushButton("Cancel")
        # self.back_push.setStyleSheet('QPushButton {background-color:yellow;border-style:outset;'
        #                                           'border-width:2px;border-color: white}')
        self.back_push.clicked.connect(self.loadCsv)
        self.back_push.setFixedSize(200, 30)

        self.back1_push = QPushButton("Back")
        # self.back1_push.setStyleSheet('QPushButton {background-color:yellow;border-style:outset;'
        #                                           'border-width:2px;border-color: white}')
        self.back1_push.clicked.connect(self.loadCsv)
        self.back1_push.setFixedSize(200, 30)

        self.save_push.hide()
        self.back_push.hide()
        self.back1_push.hide()

        self.name_edit_line = QLineEdit()
        self.name_edit_line.setFixedHeight(50)
        self.age_edit_line = QSpinBox()
        self.age_edit_line.setFixedHeight(50)
        self.date_edit_line = QLineEdit()
        self.date_edit_line.setFixedHeight(50)
        self.photo_edit_line = QLineEdit()
        self.photo_edit_line.setFixedHeight(50)
        self.diagnose_edit_line = QLineEdit()
        self.diagnose_edit_line.setFixedHeight(100)
        # self.diagnose_edit_line.setFixedSize(360, 100)

        self.Name_label = QLabel("Name:")
        # self.Name_label.setFixedHeight(20)
        self.Age_label = QLabel("Age:")
        self.Date_label = QLabel("visit Date:")
        self.photo_label = QLabel("Upload Photo:")
        self.diagnose_label = QLabel("Diagnose:")

        self.name_edit_line.hide()
        self.Name_label.hide()
        self.Age_label.hide()
        self.age_edit_line.hide()
        self.date_edit_line.hide()
        self.Date_label.hide()
        self.photo_edit_line.hide()
        self.photo_label.hide()
        self.diagnose_label.hide()
        self.diagnose_edit_line.hide()

        self.scroll = QScrollArea()
        self.scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
        self.scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
        self.scroll.setWidgetResizable(True)
        self.scroll.setWidget(widget)

        self.imageLabel = QLabel()

        self.listWidget = QListWidget(self)
        # self.listWidget.setStyleSheet('QListWidget{background-color: purple; color: white; border:5px;'
        #                          'border-style:outset;border-color: white;selection-color: yellow}')
        self.listWidget.itemDoubleClicked.connect(self.image)

        self.listWidget.hide()
        self.Qtree.setModel(self.model)
        self.Qtree.hide()

        self.push_layout.addWidget(self.add_patient_pushbotton, 0, 0, 0, 1)
        self.push_layout.addWidget(self.zoom_in_push, 0, 0)
        self.push_layout.addWidget(self.zoom_out_push, 0, 1)
        self.push_layout.addWidget(self.brightness_push, 0, 2)
        self.push_layout.addWidget(self.sharpness_push, 0, 3)
        self.push_layout.addWidget(self.color_push, 0, 4)
        self.push_layout.addWidget(self.reset_push, 0, 5)
        self.push_layout.addWidget(self.close_push, 0, 6)
        self.push_layout.addWidget(self.save_push, 0, 0)
        self.push_layout.addWidget(self.back_push, 0, 1)
        self.push_layout.addWidget(self.back1_push, 0, 0)
        self.push_layout.addWidget(self.listWidget, 1, 0)

        self.btn_layout.addLayout(self.push_layout, 5, 0)
        self.btn_layout.addWidget(self.Name_label, 0, 0)
        self.btn_layout.addWidget(self.name_edit_line, 0, 1)
        self.btn_layout.addWidget(self.Age_label, 1, 0)
        self.btn_layout.addWidget(self.age_edit_line, 1, 1)
        self.btn_layout.addWidget(self.Date_label, 2, 0)
        self.btn_layout.addWidget(self.date_edit_line, 2, 1)
        self.btn_layout.addWidget(self.photo_label, 3, 0)
        self.btn_layout.addWidget(self.photo_edit_line, 3, 1)
        self.btn_layout.addWidget(self.diagnose_label, 4, 0)
        self.btn_layout.addWidget(self.diagnose_edit_line, 4, 1)
        self.btn_layout.addWidget(self.scroll)
        self.btn_layout.addWidget(self.Qtree, 0, 0)

        self.mainLayout.addWidget(self.imageLabel, 0, 0)

        self.scroll.hide()

    def loadCsv(self):
        self.model.clear()
        self.add_patient_pushbotton.show()
        self.back1_push.hide()
        self.listWidget.hide()

        self.name_edit_line.hide()
        self.Name_label.hide()
        self.Age_label.hide()
        self.age_edit_line.hide()
        self.date_edit_line.hide()
        self.Date_label.hide()
        self.photo_edit_line.hide()
        self.photo_label.hide()
        self.diagnose_label.hide()
        self.diagnose_edit_line.hide()
        self.save_push.hide()
        self.back_push.hide()

        self.zoom_out_push.hide()
        self.zoom_in_push.hide()
        self.close_push.hide()
        self.reset_push.hide()
        self.sharpness_push.hide()
        self.brightness_push.hide()
        self.color_push.hide()

        data = pd.read_csv(self.CSV_fileName)
        header = list(data)
        data = data.values.tolist()
        self.next_id = len(data)
        items = [QtGui.QStandardItem(str(l)) for l in header]
        self.model.appendRow(items)
        for lst in data:
            items = [QtGui.QStandardItem(str(l)) for l in lst]
            self.model.appendRow(items)

        self.Qtree.show()

    def show_details(self, signal):

        r = signal.row() - 1

        if r >= 0:
            self.back1_push.show()

            self.listWidget.clear()
            data = pd.read_csv(self.CSV_fileName)
            data = data.values.tolist()
            self.d = data[r]

            txt = "id is: " + str(self.d[0]) + "\nname is: " + str(self.d[1]) + "\nage is: " + str(
                self.d[2]) + "\nDiagnoses: " + str(
                self.d[5]) \
                  + "\nPress to show the image"

            QListWidgetItem(txt, self.listWidget)

            self.listWidget.setGeometry(1, 1, 500, 200)

            self.Qtree.close()
            self.add_patient_pushbotton.hide()
            self.listWidget.show()

        else:
            pass

    def add_patient(self):
        self.Qtree.close()
        self.add_patient_pushbotton.hide()

        self.name_edit_line.clear()
        self.age_edit_line.clear()
        self.date_edit_line.clear()
        self.photo_edit_line.clear()
        self.diagnose_edit_line.clear()

        self.name_edit_line.show()
        self.Name_label.show()
        self.Age_label.show()
        self.age_edit_line.show()
        self.date_edit_line.show()
        self.Date_label.show()
        self.photo_edit_line.show()
        self.photo_label.show()
        self.diagnose_label.show()
        self.diagnose_edit_line.show()
        self.save_push.show()
        self.back_push.show()

        currentDT = datetime.datetime.now()
        self.date_edit_line.setText(str(currentDT))

    def write_to_csv(self):
        name = self.name_edit_line.text()
        age = str(self.age_edit_line.value())
        date = self.date_edit_line.text()
        image_name = "data/" + name + "_" + date + ".jpg"
        diag = self.diagnose_edit_line.text()

        l2 = [self.next_id, name, age, date, image_name, diag]

        data = pd.read_csv(self.CSV_fileName)
        header = list(data)

        l1 = data.values.tolist()
        dict = {}
        for i, key in enumerate(header):
            lst = []
            for l in l1:
                lst.append(l[i])
            lst.append(l2[i])
            dict[str(key)] = lst

        df = pd.DataFrame(dict)
        df.to_csv(self.CSV_fileName, index=False)

        self.loadCsv()

    def image(self):
        self.scroll.show()
        self.listWidget.close()
        self.back1_push.hide()
        self.fileName_edit = "photo_edit/temp.jpg"
        try:
            image = Image.open(self.d[4])

            image.save("photo_edit/temp.jpg")

            # self.scaleFactor = 0.0
            self.scaleFactor = 1.0

            fileName = self.d[4]
            if fileName:
                image = QtGui.QImage(fileName)
                # print(type(image))

                if image.isNull():
                    QMessageBox.information(self, "Image Viewer",
                                            "Cannot load %s." % fileName)
                    return
                self.qpixmap = QtGui.QPixmap.fromImage(image)
                self.imageLabel.setPixmap(self.qpixmap)

            self.imageLabel.show()

        except:
            # img = np.zeros((500,500,3))
            # image = QtGui.QImage(img, img.shape[1],img.shape[0], img.shape[1] * 3, QtGui.QImage.Format_RGB888)

            img = Image.new('RGB', (700, 600), (0, 0, 0))

            draw = ImageDraw.Draw(img)
            draw.text((200, 200),
                      "No Photo To Display!",
                      fill='rgb(255, 255, 255)',
                      font=ImageFont.truetype(
                          "/usr/share/fonts/dejavu/DejaVuSans.ttf", 25))

            img.save(self.fileName_edit)
            img.save(self.d[4])
            img = img.convert("RGBA")
            data = img.tobytes("raw", "RGBA")

            qim = QtGui.QImage(data, img.size[0], img.size[1],
                               QtGui.QImage.Format_ARGB32)
            pix = QtGui.QPixmap.fromImage(qim)

            self.imageLabel.setPixmap(pix)
            self.imageLabel.show()

        self.add_patient_pushbotton.hide()
        self.zoom_out_push.show()
        self.zoom_in_push.show()
        self.close_push.show()
        self.reset_push.show()
        self.sharpness_push.show()
        self.brightness_push.show()
        self.color_push.show()

    def adjustScrollBar(self, scrollBar, scale):
        scrollBar.setValue(
            int(scale * scrollBar.value() +
                ((scale - 1) * scrollBar.pageStep() / 2)))

    def zoom(self):
        if "zoom" not in os.listdir("photo_edit"):
            os.mkdir("photo_edit/zoom")
        sender = self.sender()
        self.zoom_flag = True
        image = Image.open(self.fileName_edit)

        if sender == self.zoom_in_push:
            self.zoom_count += 1
        else:
            self.zoom_count += -1
        scale = 1.2
        scale = (scale)**self.zoom_count
        self.adjustScrollBar(self.scroll.horizontalScrollBar(), scale)
        self.adjustScrollBar(self.scroll.verticalScrollBar(), scale)

        h = int(image.size[1] * scale)
        w = int(image.size[0] * scale)
        image = image.resize((w, h), Image.BICUBIC)
        image.save(self.zoom_file_path)
        self.imageLabel.clear()
        image = QtGui.QImage(self.zoom_file_path)
        self.qpixmap = QtGui.QPixmap.fromImage(image)
        self.imageLabel.setPixmap(self.qpixmap)

    def brightness(self):
        if self.zoom_flag:
            shutil.copy(self.zoom_file_path, self.fileName_edit)
            self.zoom_flag = False
            self.zoom_count = 0

        image = Image.open(self.fileName_edit)
        enhancer = ImageEnhance.Contrast(image)
        out = enhancer.enhance(1.7)
        out.save(self.fileName_edit)
        out = QtGui.QImage(self.fileName_edit)

        self.imageLabel.clear()
        qpixmap = QtGui.QPixmap.fromImage(out)
        self.imageLabel.setPixmap(qpixmap)
        self.scaleFactor = 1.0
        self.imageLabel.adjustSize()

    def sharpness(self):
        if self.zoom_flag:
            shutil.copy(self.zoom_file_path, self.fileName_edit)
            self.zoom_flag = False
            self.zoom_count = 0

        self.image = Image.open(self.fileName_edit)
        enhancer = ImageEnhance.Sharpness(self.image)
        out = enhancer.enhance(1.7)
        out.save(self.fileName_edit)
        out = QtGui.QImage(self.fileName_edit)

        self.imageLabel.clear()
        qpixmap = QtGui.QPixmap.fromImage(out)
        self.imageLabel.setPixmap(qpixmap)
        self.scaleFactor = 1.0
        self.imageLabel.adjustSize()

    def color(self):
        if self.zoom_flag:
            shutil.copy(self.zoom_file_path, self.fileName_edit)
            self.zoom_flag = False
            self.zoom_count = 0

        self.image = Image.open(self.fileName_edit)
        enhancer = ImageEnhance.Color(self.image)
        out = enhancer.enhance(1.7)
        out.save(self.fileName_edit)
        out = QtGui.QImage(self.fileName_edit)

        self.imageLabel.clear()
        qpixmap = QtGui.QPixmap.fromImage(out)
        self.imageLabel.setPixmap(qpixmap)
        self.scaleFactor = 1.0
        self.imageLabel.adjustSize()

    def reset(self):
        self.zoom_flag = False
        self.zoom_count = 0
        self.imageLabel.clear()
        o_i = QtGui.QImage(self.d[4])
        qpixmap = QtGui.QPixmap.fromImage(o_i)
        self.imageLabel.setPixmap(qpixmap)
        self.imageLabel.adjustSize()
        self.image = Image.open(self.d[4])
        self.image.save("photo_edit/temp.jpg")

    def end(self):
        self.scroll.hide()
        self.imageLabel.close()

        self.loadCsv()