Як написати калькулятор на Python з допомогою PyQt5
Ответы
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_())