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?