Загрузка данных
import sys
from math import gcd
from PyQt6.QtWidgets import QApplication, QMainWindow
from percent import Ui_MainWindow
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
# Вкладка 1
self.ui.calcButton.clicked.connect(self.percent_of_number)
# Вкладка 2
self.ui.percentXYButton.clicked.connect(self.x_from_y)
# Вкладка 3
self.ui.addButton.clicked.connect(self.add_percent)
# Вкладка 4
self.ui.subButton.clicked.connect(self.sub_percent)
# Вкладка 5
self.ui.calculateGcdLcmButton.clicked.connect(self.gcd_lcm)
# Радиокнопки
self.ui.radio3.setChecked(True)
self.ui.radio2.toggled.connect(self.update_fields)
self.ui.radio3.toggled.connect(self.update_fields)
self.ui.radio4.toggled.connect(self.update_fields)
self.update_fields()
# Скрытие и отображение полей
def update_fields(self):
if self.ui.radio2.isChecked():
self.ui.num3Edit.hide()
self.ui.num4Edit.hide()
self.ui.label_18.hide()
self.ui.label_19.hide()
elif self.ui.radio3.isChecked():
self.ui.num3Edit.show()
self.ui.num4Edit.hide()
self.ui.label_18.show()
self.ui.label_19.hide()
elif self.ui.radio4.isChecked():
self.ui.num3Edit.show()
self.ui.num4Edit.show()
self.ui.label_18.show()
self.ui.label_19.show()
# Процент от числа
def percent_of_number(self):
try:
percent = float(self.ui.percentEdit.text())
number = float(self.ui.numberEdit.text())
result = number * percent / 100
self.ui.resultLabel.setText(
f"Результат: {result}"
)
except ValueError:
self.ui.resultLabel.setText(
"Ошибка ввода"
)
# Сколько процентов составляет X от Y
def x_from_y(self):
try:
x = float(self.ui.xEdit.text())
y = float(self.ui.yEdit.text())
result = x / y * 100
self.ui.resultXYButton.setText(
f"Результат: {result:.2f}%"
)
except ValueError:
self.ui.resultXYButton.setText(
"Ошибка ввода"
)
# Прибавить процент
def add_percent(self):
try:
number = float(self.ui.addNumberEdit.text())
percent = float(self.ui.addPercentEdit.text())
result = number + number * percent / 100
self.ui.addResultLabel.setText(
f"Результат: {result}"
)
except ValueError:
self.ui.addResultLabel.setText(
"Ошибка ввода"
)
# Вычесть процент
def sub_percent(self):
try:
number = float(self.ui.subNumberEdit.text())
percent = float(self.ui.subPercentEdit.text())
result = number - number * percent / 100
self.ui.subResultLabel.setText(
f"Результат: {result}"
)
except ValueError:
self.ui.subResultLabel.setText(
"Ошибка ввода"
)
# НОД и НОК
def gcd_lcm(self):
try:
a = int(self.ui.num1Edit.text())
b = int(self.ui.num2Edit.text())
if self.ui.radio2.isChecked():
nod = gcd(a, b)
nok = a * b // nod
elif self.ui.radio3.isChecked():
c = int(self.ui.num3Edit.text())
nod = gcd(gcd(a, b), c)
nok = a * b // gcd(a, b)
nok = nok * c // gcd(nok, c)
else:
c = int(self.ui.num3Edit.text())
d = int(self.ui.num4Edit.text())
nod = gcd(gcd(gcd(a, b), c), d)
nok = a * b // gcd(a, b)
nok = nok * c // gcd(nok, c)
nok = nok * d // gcd(nok, d)
self.ui.resultGcdLcmLabel.setText(
f"НОД = {nod}\nНОК = {nok}"
)
except ValueError:
self.ui.resultGcdLcmLabel.setText(
"Ошибка ввода"
)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())