Необязательный ввод

DmitriyFilin

Новичок
Пользователь
Июл 22, 2020
3
0
1
Добрый вечер.

Только начинаю изучение и столкнулся с проблемой:

Калькулятор, если я не заполню все поля ввода, крашится.
Как можно сделать поле необязательным для ввода?

Пример:
a = int(self.ui.a.text())
b = int(self.ui.b.text())
c = int(self.ui.c.text())

Система ждёт, что я введу a, b и c (хотя бы 0), но я не хочу вводить c и получить при этом сумму.

Прошу помощи)
Заранее благодарю.
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Без полного кода или хотя бы минимально запускаемого и демонстрирующего ошибку сложно сказать. Так как не понятно как у вас реализован ввод значений, какая ошибка выходит и т. д.
 

DmitriyFilin

Новичок
Пользователь
Июл 22, 2020
3
0
1
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 = 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_())


Когда заполняю все поля, сумма считается:
1595520629459.png

Но стоит мне не ввести одно поле, программа крашится, и выходит ошибка: Process finished with exit code -1073740791 (0xC0000409)
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
При запуске кода который вы написали выше не появляется форма и даже не запускается метод getSum. Так что воспроизвести ошибку не получилось.
Чтобы исправить ошибку можете попробовать использовать try/except:
Python:
def getSum(self):
    try:
        a = int(self.ui.a.text())
    except:
        a = 0
    try:
        b = int(self.ui.b.text())
    except:
        b = 0
    try:
        c = int(self.ui.c.text())
    except:
        c = 0
    s = a+b+c
    
    self.ui.sum.setText(str(s))
 

DmitriyFilin

Новичок
Пользователь
Июл 22, 2020
3
0
1
Решение:
...
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.setNum(s)
...

1595768055991.png
 

Форум IT Специалистов