@kruu

Ошибка с pyqt 5?

Недавно только начал работать с pyqt5, решил для себя сделать калькулятор, ради практики, все получилось, вроде как, но всегда при нажатии "Равно" у меня крашит калькулятор, с множеством вариаций кода, не знаю там ли ищу проблему. Подскажите пожалуйста ошибки, спасибо)

import PyQt5.QtWidgets as qwt

class MainWindow(qwt.QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Calculator")
        self.setLayout(qwt.QVBoxLayout())
        self.keypad()
        self.temp_nums = []
        self.show()

    def keypad(self):
        container = qwt.QWidget()
        container.setLayout(qwt.QGridLayout())

        self.result = qwt.QLineEdit()
        btn_ravno = qwt.QPushButton("Равно", clicked = self.func_result)
        btn_clear = qwt.QPushButton("Стереть", clicked = self.clear_calc)
        btn1 = qwt.QPushButton("1", clicked = lambda: self.num_press("1"))
        btn2 = qwt.QPushButton("2", clicked = lambda: self.num_press("2"))
        btn3 = qwt.QPushButton("3", clicked = lambda: self.num_press("3"))
        btn4 = qwt.QPushButton("4", clicked = lambda: self.num_press("4"))
        btn5 = qwt.QPushButton("5", clicked = lambda: self.num_press("5"))
        btn6 = qwt.QPushButton("6", clicked = lambda: self.num_press("6"))
        btn7 = qwt.QPushButton("7", clicked = lambda: self.num_press("7"))
        btn8 = qwt.QPushButton("8", clicked = lambda: self.num_press("8"))
        btn9 = qwt.QPushButton("9", clicked = lambda: self.num_press("9"))
        btn0 = qwt.QPushButton("0", clicked = lambda: self.num_press("0"))
        btn_plus = qwt.QPushButton("+", clicked = lambda: self.num_press("+"))
        btn_minus = qwt.QPushButton("-", clicked = lambda: self.num_press("-"))
        btn_delit = qwt.QPushButton("/", clicked = lambda: self.num_press("/"))
        btn_umn = qwt.QPushButton("*", clicked = lambda: self.num_press("*"))

        container.layout().addWidget(self.result, 0, 0, 1, 4)
        container.layout().addWidget(btn_ravno, 1, 0, 1, 2)
        container.layout().addWidget(btn_clear, 1, 2, 1, 2)
        container.layout().addWidget(btn9, 2, 0)
        container.layout().addWidget(btn8, 2, 1)
        container.layout().addWidget(btn7, 2, 2)
        container.layout().addWidget(btn_plus, 2, 3)
        container.layout().addWidget(btn1, 4, 2)
        container.layout().addWidget(btn2, 4, 1)
        container.layout().addWidget(btn3, 4, 0)
        container.layout().addWidget(btn4, 3, 2)
        container.layout().addWidget(btn5, 3, 1)
        container.layout().addWidget(btn6, 3, 0)
        container.layout().addWidget(btn0, 5, 0, 1, 3)
        container.layout().addWidget(btn_delit, 5, 3)
        container.layout().addWidget(btn_minus, 3, 3)
        container.layout().addWidget(btn_umn, 4, 3)
        self.layout().addWidget(container)

    def num_press(self, key_number):
        global na_tablo
        self.temp_nums.append(key_number)
        na_tablo = "".join(self.temp_nums)
        self.result.setText(na_tablo)

    def func_result(self):
        self.result.clear()
        self.result.setText(eval(na_tablo))

    def clear_calc(self):
        self.result.clear()
        self.temp_nums = []


app = qwt.QApplication([])
mw = MainWindow()
app.setStyle(qwt.QStyleFactory.create("Fusion"))
app.exec_()
  • Вопрос задан
  • 42 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы