PyQt5 Issues with function

-1

I am trying to set this up to where the user will input numbers into the text boxes then run the calculations to determine the amount of hours in each of the different buckets straight time, overtime, and double-time.

I wrote the calculations separately and verified it worked through an IDLE. I also ran the GUI and verified it worked, but when i merge the two together it crashes every time i press the button to calculate. I am getting Process finished with exit code -1073740791 (0xC0000409). I am guessing that its an issue with trying to store that many if statements in a function, but i'm not really sure. Any pointers or trips would be greatly appreciated.

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'C:\Python\Hours.1\GUI.Hours.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!


from PyQt5 import QtCore, QtGui, QtWidgets



class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(594, 678)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.layoutWidget = QtWidgets.QWidget(self.centralwidget)
        self.layoutWidget.setGeometry(QtCore.QRect(130, 140, 122, 429))
        self.layoutWidget.setObjectName("layoutWidget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.layoutWidget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.lineEdit = QtWidgets.QLineEdit(self.layoutWidget)
        self.lineEdit.setObjectName("lineEdit")
        self.verticalLayout.addWidget(self.lineEdit)
        self.lineEdit_2 = QtWidgets.QLineEdit(self.layoutWidget)
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.verticalLayout.addWidget(self.lineEdit_2)
        self.lineEdit_3 = QtWidgets.QLineEdit(self.layoutWidget)
        self.lineEdit_3.setObjectName("lineEdit_3")
        self.verticalLayout.addWidget(self.lineEdit_3)
        self.lineEdit_4 = QtWidgets.QLineEdit(self.layoutWidget)
        self.lineEdit_4.setObjectName("lineEdit_4")
        self.verticalLayout.addWidget(self.lineEdit_4)
        self.lineEdit_5 = QtWidgets.QLineEdit(self.layoutWidget)
        self.lineEdit_5.setObjectName("lineEdit_5")
        self.verticalLayout.addWidget(self.lineEdit_5)
        self.lineEdit_6 = QtWidgets.QLineEdit(self.layoutWidget)
        self.lineEdit_6.setObjectName("lineEdit_6")
        self.verticalLayout.addWidget(self.lineEdit_6)
        self.lineEdit_7 = QtWidgets.QLineEdit(self.layoutWidget)
        self.lineEdit_7.setObjectName("lineEdit_7")
        self.verticalLayout.addWidget(self.lineEdit_7)
        self.lineEdit_8 = QtWidgets.QLineEdit(self.layoutWidget)
        self.lineEdit_8.setObjectName("lineEdit_8")
        self.verticalLayout.addWidget(self.lineEdit_8)
        self.lineEdit_9 = QtWidgets.QLineEdit(self.layoutWidget)
        self.lineEdit_9.setObjectName("lineEdit_9")
        self.verticalLayout.addWidget(self.lineEdit_9)
        self.lineEdit_10 = QtWidgets.QLineEdit(self.layoutWidget)
        self.lineEdit_10.setObjectName("lineEdit_10")
        self.verticalLayout.addWidget(self.lineEdit_10)
        self.lineEdit_11 = QtWidgets.QLineEdit(self.layoutWidget)
        self.lineEdit_11.setObjectName("lineEdit_11")
        self.verticalLayout.addWidget(self.lineEdit_11)
        self.lineEdit_12 = QtWidgets.QLineEdit(self.layoutWidget)
        self.lineEdit_12.setObjectName("lineEdit_12")
        self.verticalLayout.addWidget(self.lineEdit_12)
        self.lineEdit_13 = QtWidgets.QLineEdit(self.layoutWidget)
        self.lineEdit_13.setObjectName("lineEdit_13")
        self.verticalLayout.addWidget(self.lineEdit_13)
        self.lineEdit_14 = QtWidgets.QLineEdit(self.layoutWidget)
        self.lineEdit_14.setObjectName("lineEdit_14")
        self.verticalLayout.addWidget(self.lineEdit_14)
        self.layoutWidget1 = QtWidgets.QWidget(self.centralwidget)
        self.layoutWidget1.setGeometry(QtCore.QRect(8, 140, 111, 431))
        self.layoutWidget1.setObjectName("layoutWidget1")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.layoutWidget1)
        self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.Monday = QtWidgets.QLabel(self.layoutWidget1)
        self.Monday.setObjectName("Monday")
        self.verticalLayout_2.addWidget(self.Monday)
        self.Tuesday = QtWidgets.QLabel(self.layoutWidget1)
        self.Tuesday.setObjectName("Tuesday")
        self.verticalLayout_2.addWidget(self.Tuesday)
        self.Wednesday = QtWidgets.QLabel(self.layoutWidget1)
        self.Wednesday.setObjectName("Wednesday")
        self.verticalLayout_2.addWidget(self.Wednesday)
        self.Thursday = QtWidgets.QLabel(self.layoutWidget1)
        self.Thursday.setObjectName("Thursday")
        self.verticalLayout_2.addWidget(self.Thursday)
        self.Friday = QtWidgets.QLabel(self.layoutWidget1)
        self.Friday.setObjectName("Friday")
        self.verticalLayout_2.addWidget(self.Friday)
        self.Saturday = QtWidgets.QLabel(self.layoutWidget1)
        self.Saturday.setObjectName("Saturday")
        self.verticalLayout_2.addWidget(self.Saturday)
        self.Sunday = QtWidgets.QLabel(self.layoutWidget1)
        self.Sunday.setObjectName("Sunday")
        self.verticalLayout_2.addWidget(self.Sunday)
        self.Monday2 = QtWidgets.QLabel(self.layoutWidget1)
        self.Monday2.setObjectName("Monday2")
        self.verticalLayout_2.addWidget(self.Monday2)
        self.Tuesday2 = QtWidgets.QLabel(self.layoutWidget1)
        self.Tuesday2.setObjectName("Tuesday2")
        self.verticalLayout_2.addWidget(self.Tuesday2)
        self.Wednesday2 = QtWidgets.QLabel(self.layoutWidget1)
        self.Wednesday2.setObjectName("Wednesday2")
        self.verticalLayout_2.addWidget(self.Wednesday2)
        self.Thursday2 = QtWidgets.QLabel(self.layoutWidget1)
        self.Thursday2.setObjectName("Thursday2")
        self.verticalLayout_2.addWidget(self.Thursday2)
        self.Friday2 = QtWidgets.QLabel(self.layoutWidget1)
        self.Friday2.setObjectName("Friday2")
        self.verticalLayout_2.addWidget(self.Friday2)
        self.Saturday2 = QtWidgets.QLabel(self.layoutWidget1)
        self.Saturday2.setObjectName("Saturday2")
        self.verticalLayout_2.addWidget(self.Saturday2)
        self.Sunday2 = QtWidgets.QLabel(self.layoutWidget1)
        self.Sunday2.setObjectName("Sunday2")
        self.verticalLayout_2.addWidget(self.Sunday2)
        self.layoutWidget2 = QtWidgets.QWidget(self.centralwidget)
        self.layoutWidget2.setGeometry(QtCore.QRect(460, 260, 81, 151))
        self.layoutWidget2.setObjectName("layoutWidget2")
        self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.layoutWidget2)
        self.verticalLayout_3.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.lcdNumber = QtWidgets.QLCDNumber(self.layoutWidget2)
        self.lcdNumber.setObjectName("lcdNumber")
        self.verticalLayout_3.addWidget(self.lcdNumber)
        self.lcdNumber_2 = QtWidgets.QLCDNumber(self.layoutWidget2)
        self.lcdNumber_2.setObjectName("lcdNumber_2")
        self.verticalLayout_3.addWidget(self.lcdNumber_2)
        self.lcdNumber_3 = QtWidgets.QLCDNumber(self.layoutWidget2)
        self.lcdNumber_3.setObjectName("lcdNumber_3")
        self.verticalLayout_3.addWidget(self.lcdNumber_3)
        self.layoutWidget3 = QtWidgets.QWidget(self.centralwidget)
        self.layoutWidget3.setGeometry(QtCore.QRect(358, 260, 91, 151))
        self.layoutWidget3.setObjectName("layoutWidget3")
        self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.layoutWidget3)
        self.verticalLayout_4.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_4.setObjectName("verticalLayout_4")
        self.Straight_Time = QtWidgets.QLabel(self.layoutWidget3)
        self.Straight_Time.setObjectName("Straight_Time")
        self.verticalLayout_4.addWidget(self.Straight_Time)
        self.Overtime = QtWidgets.QLabel(self.layoutWidget3)
        self.Overtime.setObjectName("Overtime")
        self.verticalLayout_4.addWidget(self.Overtime)
        self.DoubleOvertime = QtWidgets.QLabel(self.layoutWidget3)
        self.DoubleOvertime.setObjectName("DoubleOvertime")
        self.verticalLayout_4.addWidget(self.DoubleOvertime)
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(350, 430, 191, 51))
        self.pushButton.setObjectName("pushButton")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 594, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

        self.pushButton.clicked.connect(self.CalHour)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.Monday.setText(_translate("MainWindow", "Monday"))
        self.Tuesday.setText(_translate("MainWindow", "Tuesday"))
        self.Wednesday.setText(_translate("MainWindow", "Wednesday"))
        self.Thursday.setText(_translate("MainWindow", "Thursday"))
        self.Friday.setText(_translate("MainWindow", "Friday"))
        self.Saturday.setText(_translate("MainWindow", "Saturday"))
        self.Sunday.setText(_translate("MainWindow", "Sunday"))
        self.Monday2.setText(_translate("MainWindow", "Monday 2"))
        self.Tuesday2.setText(_translate("MainWindow", "Tuesday 2"))
        self.Wednesday2.setText(_translate("MainWindow", "Wednesday 2"))
        self.Thursday2.setText(_translate("MainWindow", "Thursday 2"))
        self.Friday2.setText(_translate("MainWindow", "Friday 2"))
        self.Saturday2.setText(_translate("MainWindow", "Saturday 2"))
        self.Sunday2.setText(_translate("MainWindow", "Sunday 2"))
        self.Straight_Time.setText(_translate("MainWindow", "Straight Time"))
        self.Overtime.setText(_translate("MainWindow", "Overtime"))
        self.DoubleOvertime.setText(_translate("MainWindow", "Double Overtime"))
        self.pushButton.setText(_translate("MainWindow", "Calculate"))

    def CalHour(self):
        Monday_1 = self.lineEdit.text()
        Tuesday_1 = self.lineEdit_2.text()
        Wednesday_1 = self.lineEdit_3.text()
        Thursday_1 = self.lineEdit_4.text()
        Friday_1 = self.lineEdit_5.text()
        Saturday_1 = self.lineEdit_6()
        Sunday_1 = self.lineEdit_7.text()
       #Convert Text to Number
        Mon1 = float(Monday_1)
        Tue1 = float(Tuesday_1)
        Wed1 = float(Wednesday_1)
        Thur1 = float(Thursday_1)
        Fri1 = float(Friday_1)
        Sat1 = float(Saturday_1)
        Sun1 = float(Sunday_1)
        # Daily Straight Time Calculation
        if 0 <= Mon1 <= 8:
            Mon_straight_time = Mon1
        else:
            Mon_straight_time = 8
        if 0 <= Tue1 <= 8:
            Tue_straight_time = Tue1
        else:
            Tue_straight_time = 8

        if 0 <= Wed1 <= 8:
            Wed_straight_time = Wed1
        else:
            Wed_straight_time = 8

        if 0 <= Thur1 <= 8:
            Thur_straight_time = Thur1
        else:
            Thur_straight_time = 8

        if 0 <= Fri1 <= 8:
            Fri_straight_time = Fri1
        else:
            Fri_straight_time = 8

        if 0 <= Sat1 <= 8:
            Sat_straight_time = Sat1
        else:
            Sat_straight_time = 8

        if 0 <= Sun1 <= 8:
            Sun_straight_time = Sun1
        else:
            Sun_straight_time = 8

        # Weekly Straight time calculation
        Weekly_straight_time = (Mon_straight_time + Tue_straight_time +
                                Wed_straight_time + Thur_straight_time +
                                Fri_straight_time + Sat_straight_time + Sun_straight_time)
        # Evaluate  Daily Overtime
        if 8 < Mon1 <= 12:
            Mon_overtime = Mon1 - 8
        elif 8 < Mon1 > 12:
            Mon_overtime = 4
        else:
            Mon_overtime = 0
        if 8 < Tue1 <= 12:
            Tue_overtime = Tue1 - 8
        elif 8 < Tue1 > 12:
            Tue_overtime = 4
        else:
            Tue_overtime = 0
        if 8 < Wed1 <= 12:
            Wed_overtime = Wed1 - 8
        elif 8 < Wed1 > 12:
            Wed_overtime = 4
        else:
            Wed_overtime = 0
        if 8 < Thur1 <= 12:
            Thur_overtime = Thur1 - 8
        elif 8 < Thur1 > 12:
            Thur_overtime = 4
        else:
            Thur_overtime = 0
        if 8 < Fri1 <= 12:
            Fri_overtime = Fri1 - 8
        elif 8 < Fri1 > 12:
            Fri_overtime = 4
        else:
            Fri_overtime = 0

        # Saturday Overtime and Double-time
        if Weekly_straight_time >= 40 and 12 >= Sat1 > 0:
            Sat_overtime = Sat1
            Sat_double_time = 0
        elif Weekly_straight_time >= 40 and 12 <= Sat1:
            Sat_overtime = 12
            Sat_double_time = Sat1 - 12
        # elif Weekly_straight_time < 40 and Sat1 > 0 and Sat1 + Weekly_straight_time <= 40:
        #   Sat1 + Weekly_straight_time
        elif Weekly_straight_time < 40 and Sat1 > 0 and Sat1 + Weekly_straight_time > 40 and Sat1 <= 12:
            Sat_overtime = ((Sat1 + Weekly_straight_time) - 40)
            # Weekly_straight_time = 40
        elif Weekly_straight_time < 40 and Sat1 > 0 and Sat1 + Weekly_straight_time > 40 and Sat1 > 12:
            Sat_overtime = ((Sat1 + Weekly_straight_time) - 40)
            # Weekly_straight_time = 40
            Sat_double_time = (Sat1 - 12)
        elif Weekly_straight_time < 40 and Sat1 > 0 and Sat1 + Weekly_straight_time <= 40 and Sat1 > 12:
            Sat_overtime = 4
            # Weekly_straight_time = 40
            Sat_double_time = (Sat1 - 12)
        elif Sat1 == 0:
            Sat_overtime = 0
            Sat_double_time = 0
        elif Sat1 < 12:
            Sat_double_time = 0
        else:
            Sat_overtime = 0

        # Add Total Overtime to this point Mon-Sat
        Mon_Sat_Overtime = Mon_overtime + Tue_overtime + Wed_overtime + Thur_overtime + Fri_overtime + Sat_overtime

        # Sunday Overtime
        if Weekly_straight_time >= 40 and 12 >= Sun1 > 0 and (
                Mon_overtime + Tue_overtime + Wed_overtime + Thur_overtime + Fri_overtime + Sat_overtime) < 40 and (
                Sun1 + (
                Mon_overtime + Tue_overtime + Wed_overtime + Thur_overtime + Fri_overtime + Sat_overtime)) <= 40:
            Sun_overtime = Sun1
            Sun_double_time = 0
        elif Weekly_straight_time >= 40 and 12 <= Sun1 > 0 and (
                Mon_overtime + Tue_overtime + Wed_overtime + Thur_overtime + Fri_overtime + Sat_overtime) < 40 and (
                Sun1 + (Mon_overtime + Tue_overtime + Wed_overtime + Thur_overtime + Fri_overtime + Sat_overtime)) > 40:
            Sun_double_time = ((Sun1 + Mon_Sat_Overtime) - 40)
            Overtime = 40
            Sun_overtime = Sun1
        elif Weekly_straight_time >= 40 and 12 <= Sun1 > 0 and (
                Mon_overtime + Tue_overtime + Wed_overtime + Thur_overtime + Fri_overtime + Sat_overtime) < 40 and (
                Sun1 + (Mon_overtime + Tue_overtime + Wed_overtime + Thur_overtime + Fri_overtime + Sat_overtime)) < 40:
            Sun_double_time = Sun1 - 12
            Sun_overtime = 12

        # elif Weekly_straight_time == 40 and 12 >= Sun1:
        #   Sun_overtime = Sun1
        # elif Weekly_straight_time == 40 and 12 < Sun1:
        #  Sun_overtime = 12
        # Sun_double_time = (Sun1 - 12)
        # elif Weekly_straight_time < 40 and Sun1 >0 and Sun1 + Weekly_straight_time <= 40:
        # Sun1 + Weekly_straight_time

        elif Weekly_straight_time < 40 and Sun1 > 0 and Sun1 + Weekly_straight_time > 40 and Sun1 <= 12:
            Sun_overtime = ((Sun1 + Weekly_straight_time) - 40)
            # Weekly_straight_time = 40
        elif Weekly_straight_time < 40 and Sun1 > 0 and Sun1 + Weekly_straight_time > 40 and Sun1 > 12:
            Sun1 = ((12 + Weekly_straight_time) - 40)
            # Weekly_straight_time = 40
            Sun_double_time = (Sat1 - 12)
        elif Weekly_straight_time < 40 and Sun1 > 0 and Sun1 + Weekly_straight_time <= 40 and Sun1 > 12:
            # Sun1 = ((12 + Weekly_straight_time) - 40)
            # Weekly_straight_time = 40
            Sun_double_time = (Sun1 - 12)
            Sun_overtime = 4
        elif Sun1 == 0:
            Sun_double_time = 0
            Sun_overtime = 0

        # Double Time Calculations
        if Mon1 > 12:
            Mon_double_time = Mon1 - 12
        elif Mon1 < 12:
            Mon_double_time = 0
        if Tue1 > 12:
            Tue_double_time = Tue1 - 12
        elif Tue1 < 12:
            Tue_double_time = 0
        if Wed1 > 12:
            Wed_double_time = Wed1 - 12
        elif Wed1 < 12:
            Wed_double_time = 0
        if Thur1 > 12:
            Thur_double_time = Thur1 - 12
        elif Thur1 < 12:
            Thur_double_time = 0
        if Fri1 > 12:
            Fri_double_time = Fri1 - 12
        elif Fri1 < 12:
            Fri_double_time = 0

        Weekly_double_time = (
                    Mon_double_time + Tue_double_time + Wed_double_time + Thur_double_time + Fri_double_time + Sat_double_time + Sun_double_time)
        Weekly_Overtime = (
                    Mon_overtime + Tue_overtime + Wed_overtime + Thur_overtime + Fri_overtime + Sat_overtime + Sun_overtime)
        if Weekly_straight_time <= 40:
            self.lcdNumber.display(Weekly_straight_time)
        else:
            self.lcdNumber.display("40")

        if Weekly_Overtime > 40:
            self.lcdNumber_2.display(Overtime)
        elif Weekly_Overtime <= 40:
            self.lcdNumber_2.display(Weekly_Overtime)
        #self.lcdNumber_3.dispaly(Weekly_double_time)




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_())
python
pyqt5
asked on Stack Overflow Sep 28, 2019 by Alex H

1 Answer

0

2 major issues first: as mentioned by ellanesc change self.lineEdit_6() to self.lineEdit_6.text()

Next initialize your vars above the if statements in CalHour:

        Mon_overtime = 0
        Tue_overtime = 0
        Wed_overtime = 0
        Thur_overtime = 0
        Fri_overtime = 0
        Sat_overtime = 0
        Sun_overtime = 0
        Mon_double_time = 0
        Tue_double_time = 0
        Wed_double_time = 0
        Thur_double_time = 0
        Fri_double_time = 0
        Sat_double_time = 0
        Sun_double_time = 0
answered on Stack Overflow Sep 28, 2019 by Tesla67 • edited Sep 28, 2019 by Tesla67

User contributions licensed under CC BY-SA 3.0