0
from PyQt5 import QtCore, QtGui, QtWidgets
import sqlite3
class Ui_MainWindow(object):
    def messagebox(self,title,message):
        mess = QtWidgets.QMessageBox()
        mess.setWindowTitle(title)
        mess.setText(message)
        mess.setStandardButtons(QtWidgets.QMessagebox.Ok)
        mess.exec_()

    def insertData(self):
        name = str(self.patientName.text())
        age = int(ageBox.Value())
        rov = str(self.patientROV.text())
        if self.priorityBox.currentText() == "Urgent":
            priority = 1
        elif self.priorityBox.currentText() == "Routine":
            priority = 2
        elif self.priorityBox.currentText() == "Minor":
            priority = 3
        frequency = str(self.frequenctBox.currentText())
        time = int(lengthBox.Value())
        date = str(self.patientDate.text())
        toD = str(self.toDBox.currentText())
        conn = sqlite3.connect('projectDB.db')
        c = conn.cursor()
        data = c.execute('INSERT INTO Patients VALUES (name,age,rov,priority,frequency,time,date,toD)', (name, age, rov, priority, frequency, time, date, toD))
        conn.commit()
        if (data):
            self.messagebox("Data added")

    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1374, 811)
        MainWindow.setStyleSheet("QMainWindow{\n"
"background-color: #000000\n"
"}\n"
"\n"
"QTabWidget{\n"
"background-color: #1d1d1d;\n"
"color: #fff\n"
"}")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
        self.tabWidget.setGeometry(QtCore.QRect(0, 0, 1373, 841))
        font = QtGui.QFont()
        font.setFamily("Lucida Sans Unicode")
        font.setPointSize(11)
        font.setBold(True)
        font.setWeight(75)
        self.tabWidget.setFont(font)
        self.tabWidget.setCursor(QtGui.QCursor(QtCore.Qt.UpArrowCursor))
        self.tabWidget.setAutoFillBackground(False)
        self.tabWidget.setStyleSheet("background-color: rgb(140, 140, 140);")
        self.tabWidget.setTabPosition(QtWidgets.QTabWidget.North)
        self.tabWidget.setTabShape(QtWidgets.QTabWidget.Rounded)
        self.tabWidget.setIconSize(QtCore.QSize(16, 16))
        self.tabWidget.setElideMode(QtCore.Qt.ElideNone)
        self.tabWidget.setDocumentMode(False)
        self.tabWidget.setTabsClosable(False)
        self.tabWidget.setMovable(False)
        self.tabWidget.setObjectName("tabWidget")
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        self.calendarWidget = QtWidgets.QCalendarWidget(self.tab)
        self.calendarWidget.setGeometry(QtCore.QRect(1, 52, 1371, 741))
        self.calendarWidget.setGridVisible(True)
        self.calendarWidget.setSelectionMode(QtWidgets.QCalendarWidget.SingleSelection)
        self.calendarWidget.setHorizontalHeaderFormat(QtWidgets.QCalendarWidget.LongDayNames)
        self.calendarWidget.setVerticalHeaderFormat(QtWidgets.QCalendarWidget.NoVerticalHeader)
        self.calendarWidget.setNavigationBarVisible(True)
        self.calendarWidget.setDateEditEnabled(True)
        self.calendarWidget.setObjectName("calendarWidget")
        self.updateSchedule = QtWidgets.QPushButton(self.tab)
        self.updateSchedule.setGeometry(QtCore.QRect(550, 20, 271, 31))
        self.updateSchedule.setStyleSheet("background-color: rgb(0, 0, 0);\n"
"color: rgb(255, 255, 255)")
        self.updateSchedule.setObjectName("updateSchedule")
        self.tabWidget.addTab(self.tab, "")
        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.label = QtWidgets.QLabel(self.tab_2)
        self.label.setGeometry(QtCore.QRect(10, 0, 571, 51))
        self.label.setStyleSheet("color: rgb(0, 0, 0);")
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.tab_2)
        self.label_2.setGeometry(QtCore.QRect(30, 60, 151, 31))
        self.label_2.setFrameShadow(QtWidgets.QFrame.Plain)
        self.label_2.setIndent(-1)
        self.label_2.setObjectName("label_2")
        self.label_10 = QtWidgets.QLabel(self.tab_2)
        self.label_10.setGeometry(QtCore.QRect(30, 210, 341, 31))
        self.label_10.setFrameShadow(QtWidgets.QFrame.Plain)
        self.label_10.setIndent(-1)
        self.label_10.setObjectName("label_10")
        self.label_12 = QtWidgets.QLabel(self.tab_2)
        self.label_12.setGeometry(QtCore.QRect(30, 450, 231, 31))
        self.label_12.setFrameShadow(QtWidgets.QFrame.Plain)
        self.label_12.setIndent(-1)
        self.label_12.setObjectName("label_12")
        self.label_13 = QtWidgets.QLabel(self.tab_2)
        self.label_13.setGeometry(QtCore.QRect(30, 370, 151, 31))
        self.label_13.setFrameShadow(QtWidgets.QFrame.Plain)
        self.label_13.setIndent(-1)
        self.label_13.setObjectName("label_13")
        self.label_14 = QtWidgets.QLabel(self.tab_2)
        self.label_14.setGeometry(QtCore.QRect(30, 300, 151, 31))
        self.label_14.setFrameShadow(QtWidgets.QFrame.Plain)
        self.label_14.setIndent(-1)
        self.label_14.setObjectName("label_14")
        self.patientROV = QtWidgets.QTextEdit(self.tab_2)
        self.patientROV.setGeometry(QtCore.QRect(30, 240, 161, 61))
        self.patientROV.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.patientROV.setObjectName("patientROV")
        self.patientName = QtWidgets.QTextEdit(self.tab_2)
        self.patientName.setGeometry(QtCore.QRect(30, 100, 104, 31))
        self.patientName.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.patientName.setObjectName("patientName")
        self.priorityBox = QtWidgets.QComboBox(self.tab_2)
        self.priorityBox.setGeometry(QtCore.QRect(30, 340, 69, 22))
        self.priorityBox.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.priorityBox.setObjectName("priorityBox")
        self.priorityBox.addItem("")
        self.priorityBox.addItem("")
        self.priorityBox.addItem("")
        self.frequencyBox = QtWidgets.QComboBox(self.tab_2)
        self.frequencyBox.setGeometry(QtCore.QRect(30, 400, 101, 22))
        self.frequencyBox.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.frequencyBox.setObjectName("frequencyBox")
        self.frequencyBox.addItem("")
        self.frequencyBox.addItem("")
        self.frequencyBox.addItem("")
        self.lengthBox = QtWidgets.QSpinBox(self.tab_2)
        self.lengthBox.setGeometry(QtCore.QRect(30, 490, 121, 31))
        self.lengthBox.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.lengthBox.setMaximum(1000)
        self.lengthBox.setObjectName("lengthBox")
        self.enterData = QtWidgets.QPushButton(self.tab_2)
        self.enterData.setGeometry(QtCore.QRect(30, 600, 241, 61))
        self.enterData.setStyleSheet("background-color: rgb(0, 0, 0);\n"
"color: rgb(255, 255, 255);")
        self.enterData.setIconSize(QtCore.QSize(16, 16))
        self.enterData.setObjectName("enterData")
        self.enterData.clicked.connect(self.insertData)  #Connect to the data entry function
        self.label_3 = QtWidgets.QLabel(self.tab_2)
        self.label_3.setGeometry(QtCore.QRect(400, 70, 581, 71))
        self.label_3.setFrameShadow(QtWidgets.QFrame.Plain)
        self.label_3.setIndent(-1)
        self.label_3.setObjectName("label_3")
        self.patientDate = QtWidgets.QTextEdit(self.tab_2)
        self.patientDate.setGeometry(QtCore.QRect(400, 140, 161, 31))
        self.patientDate.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.patientDate.setObjectName("patientDate")
        self.label_4 = QtWidgets.QLabel(self.tab_2)
        self.label_4.setGeometry(QtCore.QRect(400, 200, 291, 21))
        self.label_4.setFrameShadow(QtWidgets.QFrame.Plain)
        self.label_4.setIndent(-1)
        self.label_4.setObjectName("label_4")
        self.toDBox = QtWidgets.QComboBox(self.tab_2)
        self.toDBox.setGeometry(QtCore.QRect(400, 230, 101, 22))
        self.toDBox.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.toDBox.setObjectName("toDBox")
        self.toDBox.addItem("")
        self.toDBox.addItem("")
        self.label_5 = QtWidgets.QLabel(self.tab_2)
        self.label_5.setGeometry(QtCore.QRect(30, 140, 151, 31))
        self.label_5.setFrameShadow(QtWidgets.QFrame.Plain)
        self.label_5.setIndent(-1)
        self.label_5.setObjectName("label_5")
        self.ageBox = QtWidgets.QSpinBox(self.tab_2)
        self.ageBox.setGeometry(QtCore.QRect(30, 170, 101, 31))
        self.ageBox.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.ageBox.setMaximum(1000)
        self.ageBox.setObjectName("ageBox")
        self.tabWidget.addTab(self.tab_2, "")
        MainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        self.tabWidget.setCurrentIndex(1)
        self.toDBox.setCurrentIndex(1)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.updateSchedule.setText(_translate("MainWindow", "Update Schedule"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "Schedule"))
        self.label.setText(_translate("MainWindow", "<html><head/><body><p><span style=\" font-size:20pt; font-weight:600;\">DATA ENTRY:</span></p></body></html>"))
        self.label_2.setText(_translate("MainWindow", "<html><head/><body><p><span style=\" font-size:11pt;\">Patient Name:</span></p></body></html>"))
        self.label_10.setText(_translate("MainWindow", "<html><head/><body><p><span style=\" font-size:11pt;\">Reason of visit: </span></p><p><br/></p></body></html>"))
        self.label_12.setText(_translate("MainWindow", "<html><head/><body><p><span style=\" font-size:11pt;\">Length of Appointment (minutes):</span></p><p><br/></p><p><br/></p></body></html>"))
        self.label_13.setText(_translate("MainWindow", "<html><head/><body><p><span style=\" font-size:11pt;\">Frequency Seen:</span></p></body></html>"))
        self.label_14.setText(_translate("MainWindow", "<html><head/><body><p><span style=\" font-size:11pt;\">Patient Priority:</span></p></body></html>"))
        self.priorityBox.setItemText(0, _translate("MainWindow", "Urgent"))
        self.priorityBox.setItemText(1, _translate("MainWindow", "Routine"))
        self.priorityBox.setItemText(2, _translate("MainWindow", "Minor"))
        self.frequencyBox.setItemText(0, _translate("MainWindow", "Weekly"))
        self.frequencyBox.setItemText(1, _translate("MainWindow", "Monthly"))
        self.frequencyBox.setItemText(2, _translate("MainWindow", "Once"))
        self.enterData.setText(_translate("MainWindow", "Enter Data"))
        self.label_3.setText(_translate("MainWindow", "<html><head/><body><p><span style=\" font-size:11pt;\">Date Scheduled (Please give in the format dd/mm/yy e.g 24/04/2020)</span></p><p><span style=\" font-size:11pt;\">If no given date scheduled and appointment is flexible, please type in 0 as the value.</span></p></body></html>"))
        self.label_4.setText(_translate("MainWindow", "<html><head/><body><p><span style=\" font-size:11pt;\">Time of day preferred on scheduled date:</span></p><p><span style=\" font-size:11pt;\"><br/></span></p></body></html>"))
        self.toDBox.setItemText(0, _translate("MainWindow", "am"))
        self.toDBox.setItemText(1, _translate("MainWindow", "pm"))
        self.label_5.setText(_translate("MainWindow", "<html><head/><body><p><span style=\" font-size:11pt;\">Patient Age:</span></p><p><br/></p></body></html>"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "Add"))

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

To describe this, the program is meant to update my database using the insertData method when the 'Enter Data' button is clicked and then should pop a messagebox that says 'Data entered'. However, when I press the button the program just crashes and the python shell restarts. Could anyone tell me where I've gone wrong?

flareen
  • 1
  • 1
  • Usefull tip with PyQt : when you have an error in your code once you call a function, it'll crash. – Panda50 Apr 22 '20 at 02:02
  • Another tip: If you have a silent error then run your code from the terminal or CMD since you will get more informative error messages, in your case: *AttributeError: 'QTextEdit' object has no attribute 'text'* and the error is obvious, to access the text of a QTextEdit you must use the toPlainText() method instead of `text()`. Another tip: Before using a method, read the docs of the class since there it indicates what each method is for: https://doc.qt.io/qt-5/qtextedit.html#toPlainText – eyllanesc Apr 22 '20 at 02:09

0 Answers0