Как сделать необязательное поле lineedit формы python
Добры день.
Столкнулся с такой проблемой, что при заполнении не всех полей в форме у меня крашится калькулятор с таким ответом:
Process finished with exit code -1073740791 (0xC0000409)
Вот форма, в которой есть 3 поля:
Она суммирует все три поля и выводит ответ. Но если я введу значения только в первое и второе, то она крашится.
Как сделать поле необязательным для заполнения? Буду очень благодарен за помощь.
тело:
import sys
from calc import *
class MyWin (QtWidgets.QMainWindow):
def __init__(self, parent = None):
QtWidgets.QWidget.__init__(self, parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.ui.Button.clicked.connect(self.getSum)
def getSum(self):
a = None
b = None
c = None
a = int(self.ui.a.text())
b = int(self.ui.b.text())
c = int(self.ui.c.text())
s = a+b+c
self.ui.sum.setText(str(s))
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
myapp = MyWin()
myapp.show()
sys.exit(app.exec_())
форма:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(195, 172)
MainWindow.setMinimumSize(QtCore.QSize(195, 172))
MainWindow.setMaximumSize(QtCore.QSize(195, 172))
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.verticalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
self.verticalLayoutWidget.setGeometry(QtCore.QRect(10, 10, 171, 141))
self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setObjectName("verticalLayout")
self.a = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.a.setObjectName("a")
self.verticalLayout.addWidget(self.a)
self.b = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.b.setObjectName("b")
self.verticalLayout.addWidget(self.b)
self.c = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.c.setObjectName("c")
self.verticalLayout.addWidget(self.c)
self.Button = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.Button.setObjectName("Button")
self.verticalLayout.addWidget(self.Button)
self.sum = QtWidgets.QLabel(self.verticalLayoutWidget)
self.sum.setObjectName("sum")
self.verticalLayout.addWidget(self.sum)
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.Button.setText(_translate("MainWindow", "PushButton"))
self.sum.setText(_translate("MainWindow", "TextLabel"))
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Попробуйте так:
...
def getSum(self):
a = self.ui.a.text()
b = self.ui.b.text()
c = self.ui.c.text()
a = int(a) if a else 0
b = int(b) if b else 0
c = int(c) if c else 0
s = a + b + c
# self.ui.sum.setText(str(s))
self.ui.sum.setNum(s)
...

