Загрузка данных
import sys
from PyQt6.QtWidgets import (QApplication, QWidget, QVBoxLayout,
QHBoxLayout, QLabel, QLineEdit,
QPushButton, QLCDNumber)
from PyQt6.QtCore import Qt
from PyQt6.QtGui import QFont
class MiniCalculator(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
self.setWindowTitle("MiniCalculator")
self.setGeometry(100, 100, 500, 350)
main_layout = QVBoxLayout()
first_layout = QHBoxLayout()
first_label = QLabel("Первое число(целое):")
first_label.setMinimumWidth(150)
self.number_1 = QLineEdit()
self.number_1.setPlaceholderText("12")
first_layout.addWidget(first_label)
first_layout.addWidget(self.number_1)
second_layout = QHBoxLayout()
second_label = QLabel("Второе число(целое):")
second_label.setMinimumWidth(150)
self.number_2 = QLineEdit()
self.number_2.setPlaceholderText("0")
second_layout.addWidget(second_label)
second_layout.addWidget(self.number_2)
button_layout = QHBoxLayout()
self.calculate_button = QPushButton("->")
self.calculate_button.setMaximumWidth(100)
self.calculate_button.clicked.connect(self.calculate)
button_layout.addWidget(self.calculate_button)
button_layout.addStretch()
results_layout = QHBoxLayout()
sum_container = self._create_result_container("Сумма:")
self.result_sum = sum_container[1]
sub_container = self._create_result_container("Разность:")
self.result_sub = sub_container[1]
mul_container = self._create_result_container("Произведение:")
self.result_mul = mul_container[1]
div_container = self._create_result_container("Деление:")
self.result_div = div_container[1]
quotient_container = self._create_result_container("Частное:")
self.result_quotient = quotient_container[1]
results_layout.addLayout(sum_container[0])
results_layout.addLayout(sub_container[0])
results_layout.addLayout(mul_container[0])
results_layout.addLayout(div_container[0])
results_layout.addLayout(quotient_container[0])
main_layout.addLayout(first_layout)
main_layout.addLayout(second_layout)
main_layout.addLayout(button_layout)
main_layout.addSpacing(20)
main_layout.addLayout(results_layout)
main_layout.addStretch()
self.setLayout(main_layout)
@staticmethod
def _create_result_container(label_text: str) -> tuple:
container = QVBoxLayout()
label = QLabel(label_text)
lcd = QLCDNumber()
lcd.setSegmentStyle(QLCDNumber.SegmentStyle.Filled)
lcd.setMinimumHeight(60)
container.addWidget(label)
container.addWidget(lcd)
return (container, lcd)
def calculate(self):
try:
num1_text = self.number_1.text().strip()
num2_text = self.number_2.text().strip()
if not num1_text or not num2_text:
self._clear_results()
return
num1 = int(num1_text)
num2 = int(num2_text)
sum_result = num1 + num2
sub_result = num1 - num2
mul_result = num1 * num2
self.result_sum.display(int(sum_result))
self.result_sub.display(int(sub_result))
self.result_mul.display(int(mul_result))
if num2 == 0:
self.result_div.display("Error")
self.result_quotient.display("Error")
else:
div_result = num1 / num2
quotient_result = num1 // num2
div_display = f"{div_result:.3f}"
self.result_div.display(div_display)
self.result_quotient.display(int(quotient_result))
except ValueError:
self._show_error()
def _clear_results(self):
for result_widget in [self.result_sum, self.result_sub,
self.result_mul, self.result_div,
self.result_quotient]:
result_widget.display(0)
def _show_error(self):
for result_widget in [self.result_sum, self.result_sub,
self.result_mul, self.result_div,
self.result_quotient]:
result_widget.display("Error")
def main():
app = QApplication(sys.argv)
calculator = MiniCalculator()
calculator.show()
sys.exit(app.exec())
if __name__ == '__main__':
main()