Предмет: Информатика, автор: Аноним

Як написати калькулятор на Python з допомогою PyQt5

Ответы

Автор ответа: ppgem374
1

import sys

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QGridLayout, QLineEdit, QSizePolicy, QSpacerItem

from PyQt5.QtCore import Qt

class Calc(QWidget):

   def __init__(self):

       super().__init__()

       self.setWindowTitle('Калькулятор')

       self.setFixedSize(400, 400)

       self.initUI()

   def initUI(self):

       self.display = QLineEdit(self)

       self.display.setReadOnly(True)

       self.display.setAlignment(Qt.AlignRight)

       self.display.setFixedHeight(50)

       self.display.setStyleSheet('font-size: 20px;')

       self.buttons = {}

       grid = QGridLayout()

       grid.addWidget(self.display, 0, 0, 1, 4)

       buttons = ['7', '8', '9', '/', 'C',

                  '4', '5', '6', '*', '',

                  '1', '2', '3', '-', '',

                  '0', '.', '=', '+', '']

       row = 1

       col = 0

       for button in buttons:

           if col > 3:

               col = 0

               row += 1

           if button == '':

               spacer = QSpacerItem(20, 20, QSizePolicy.Expanding, QSizePolicy.Expanding)

               grid.addItem(spacer, row, col, 1, 1)

               col += 1

               continue

           self.buttons[button] = QPushButton(button)

           self.buttons[button].setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)

           self.buttons[button].setStyleSheet('font-size: 25px;')

           self.buttons[button].clicked.connect(self.button_clicked)

           grid.addWidget(self.buttons[button], row, col, 1, 1)

           col += 1

       self.setLayout(grid)

   def button_clicked(self):

       button = self.sender()

       text = self.display.text()

       if button.text() == 'C':

           self.display.clear()

       elif button.text() == '=':

           try:

               result = eval(text)

               self.display.setText(str(result))

           except SyntaxError:

               self.display.setText('Error!')

       else:

           self.display.setText(text + button.text())

if __name__ == '__main__':

   app = QApplication(sys.argv)

   calc = Calc()

   calc.show()

   sys.exit(app.exec_())

Похожие вопросы
Предмет: Литература, автор: sitenokanastasia
Предмет: Алгебра, автор: rirek54053