Надо при нажатии на кнопку вытаскивать значение QSpinBox'a для дальнейших вычислений внутри другой функции (не относящийся к функции нажатия на кнопку) - но как только я пытаюсь вытащить числа из qspinbox'а - приложение крашится. Если хэштегами отрубить функцию получения значений из qspinbox'a и на вывод поставить просто
self.datelbltest.setText('value: ' + result)
Вот код:
import sys, datetime from PyQt5.QtWidgets import QWidget, QDesktopWidget, QMessageBox, QApplication, QCalendarWidget, QLabel, QSpinBox, QPushButton, QMainWindow from PyQt5.QtGui import QIcon, QFont from PyQt5.QtCore import QDate, Qt, pyqtSignal, QObject datenum = 0 result = 0 num_char = 0 num_expr = 0 num_fate = 0 num_bscyear = 0 num_fnyear = 0 num_expryear = 0 summ_bday = 0 summ_bdmonth = 0 summ_bdyear = 0 summ_ftyear = 0 summ_ftyearlast = 0 class Communicate(QObject): closeApp = pyqtSignal() class mainframe(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): global datenum self.c = Communicate() self.c.closeApp.connect(self.close) btnExit = QPushButton("Выход", self) btnExit.move(20, 480) btnExit.resize(120,40) btnExit.setFont(QFont("Times New Roman", 14, QFont.Bold)) btnExit.clicked.connect(self.exitEvent) self.datelbl1 = QLabel(self) self.datelbl1.setText("Дата рождения") self.datelbl1.move(95, 15) self.datelbl1.setFont(QFont("Times New Roman", 12, QFont.Bold)) self.datelbl1.adjustSize() self.datelbl2 = QLabel(self) self.datelbl2.setText("Год прогноза") self.datelbl2.move(292, 15) self.datelbl2.setFont(QFont("Times New Roman", 12, QFont.Bold)) self.datelbl2.adjustSize() self.datelbltest = QLabel(self) self.datelbltest.setText("date test") self.datelbltest.move(20, 300) self.datelbltest.adjustSize() cal = QCalendarWidget(self) cal.setGridVisible(False) cal.move(20, 40) cal.setVerticalHeaderFormat(0) cal.clicked[QDate].connect(self.showDate) self.lbl = QLabel(self) date = cal.selectedDate() self.lbl.setText(date.toString(Qt.ISODate)) self.lbl.move(110, 230) qsb = QSpinBox(self) qsb.move(300, 40) qsb.resize(75,25) qsb.setAlignment(Qt.AlignCenter) qsb.setMinimum(1900) qsb.setMaximum(2100) qsb.setFont(QFont("Times New Roman", 14, QFont.Bold)) btn1 = QPushButton("Рассчитать матрицу", self) btn1.move(18, 255) btn1.resize(360,40) btn1.setFont(QFont("Times New Roman", 14, QFont.Bold)) btn1.clicked.connect(self.setupmatrix) self.setFixedSize(960, 540) self.center() self.setWindowIcon(QIcon('icon.png')) self.setWindowTitle('|Event Matrix|PC edition|') datenum = date.toString(Qt.ISODate) self.show() def center(self): qr = self.frameGeometry() cp = QDesktopWidget().availableGeometry().center() qr.moveCenter(cp) self.move(qr.topLeft()) def closeEvent(self, event): reply = QMessageBox.question(self, 'Выход из приложения', "Вы уверены, что хотите выйти?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if reply == QMessageBox.Yes: event.accept() else: event.ignore() def showDate(self, date): global datenum self.lbl.setText(date.toString(Qt.ISODate)) datenum = date.toString(Qt.ISODate) def setupmatrix(self): global summ_ftyearlast global result mainframe.calculate(self) self.datelbltest.setText('value: ' + summ_ftyearlast) self.datelbltest.adjustSize() def exitEvent(self, event): self.c.closeApp.emit() @staticmethod def calculate(self): global result global datenum global num_char global num_expr global num_fate global summ_ftyear global summ_ftyearlast num0 = int(datenum[0]) num1 = int(datenum[1]) num2 = int(datenum[2]) num3 = int(datenum[3]) result = str(num0+num1+num2+num3) if len(result) >= 2: resnum1 = int(result[0]) resnum2 = int(result[1]) result = str(resnum1+resnum2) ftyeartext = self.qsb.value() last1 = int(ftyeartext[2]) last2 = int(ftyeartext[3]) summ_ftyearlast = str(last1+last2) if __name__ == '__main__': app = QApplication(sys.argv) ex = mainframe() sys.exit(app.exec_())