Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
2 / 1 / 1
Регистрация: 28.03.2023
Сообщений: 13
PyQt5

Калькулятор на PyQt

17.09.2023, 00:02. Показов 3130. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем ку, я учусь в яндекс лицее. Мне нужно сделать вот такую программу "Миникалькулятор
Ограничение времени 1 секунда
Ограничение памяти 64.0 Мб
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
Напишите программу с графическим пользовательским интерфейсом на PyQT, в которой в два текстовых поля вводятся целые числа. После нажатия на кнопку программа должна вычислить сумму, разность, частное и произведение введенных чисел и вывести результат каждой операции в отдельные виджеты QLCDNumber. В случае попытки деления на 0 программа должна выводить вместо частного строку "Error".



Класс, реализующий окно приложения, назовите MiniCalcularor. Поле для ввода первого числа назовите number_1, второго - number_2. Оба поля должны быть типа QLineEdit. Кнопку назовите - calculate_button. Для изображения стрелки на кнопке используйте символы "->". Поле для вывода результата суммы назовите result_sum, разности - result_sub, умножение - result_mul, деления - result_div. Все поля для вывода результатов должны быть типа QLCDNumber.

Примечания
Для дробных чисел выводите три знака после запятой." но у меня выводит такую ошибку " Line 1 differs: out:
>Test : TestCase(number_1=12, number_2=13, result_sum=25, result_sub=-1, result_mul=156, result_div='0.923', calculate_button='->') has not passed<
corr:
>OK<" вот мой код, подскажите в чем может быть проблема
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLineEdit, QPushButton, QLCDNumber, QLabel
 
 
class MiniCalcularor(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
 
    def initUI(self):
        self.setGeometry(400, 400, 400, 400)
        self.setWindowTitle('Миникалькулятор')
        self.num_1 = QLabel(self)
        self.num_1.setText('Первое число(целое):')
        self.num_1.move(0, 5)
        self.number_1 = QLineEdit(self)
        self.number_1.resize(130, 30)
        self.number_1.move(0, 25)
        self.num_2 = QLabel(self)
        self.num_2.setText('Второе число(целое):')
        self.num_2.move(0, 65)
        self.number_2 = QLineEdit(self)
        self.number_2.resize(130, 30)
        self.number_2.move(0, 85)
        self.calculate_button = QPushButton('->', self)
        self.calculate_button.resize(30, 35)
        self.calculate_button.move(140, 55)
        self.calculate_button.clicked.connect(self.rest)
        self.res_sum = QLabel(self)
        self.res_sum.setText('Сумма:')
        self.res_sum.move(200, 10)
        self.result_sum = QLCDNumber(self)
        self.result_sum.move(260, 10)
        self.res_sub = QLabel(self)
        self.res_sub.setText('Разность:')
        self.res_sub.move(180, 60)
        self.result_sub = QLCDNumber(self)
        self.result_sub.move(260, 60)
        self.res_mul = QLabel(self)
        self.res_mul.setText('Произведение:')
        self.res_mul.move(150, 110)
        self.result_mul = QLCDNumber(self)
        self.result_mul.move(260, 110)
        self.res_div = QLabel(self)
        self.res_div.setText('Частное:')
        self.res_div.move(190, 160)
        self.result_div = QLCDNumber(self)
        self.result_div.move(260, 160)
 
    def rest(self):
        x = int(self.number_1.text())
        y = float(self.number_2.text())
        self.result_sum.display(x + y)
        self.result_sub.display(x - y)
        self.result_mul.display(x * y)
        try:
            self.result_div.display(x / y)
        except ZeroDivisionError:
            self.result_div.display('Error')
 
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MiniCalcularor()
    ex.show()
    sys.exit(app.exec())
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.09.2023, 00:02
Ответы с готовыми решениями:

Разница между PyQT 5 и PyQT 6
Добрый день, форумчане. Прошел тут курс всеми вами любимого автора, познакомился с GUI TKinter, и по вашим советам решил освоить PyQT. ...

Как преобразовать обычный калькулятор в калькулятор использующий класс стек?
#include &lt;iostream&gt; int main(){ int a = 0; int b = 0; char operation; std::cout &lt;&lt; &quot;Enter first number: &quot;; ...

Подраздел «Калькулятор» (выводится при установке плагина «калькулятор», возможность редактировать параметры че
Подраздел «Калькулятор» (выводится при установке плагина «калькулятор», возможность редактировать параметры через админку)

4
8 / 8 / 0
Регистрация: 17.09.2023
Сообщений: 58
17.09.2023, 09:11
Вы получаете ошибку уже при попытке использования или при запуске?

и может это не по теме почему вы первое число приводите к int а второе к float?

ИМХО стрёмное задание. Python не создан для графических интерфейсов. получаются жутко тяжёлые и кастылные.
0
Любознательный
 Аватар для YuS_2
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
17.09.2023, 09:15
Цитата Сообщение от Lisi4e4ka Посмотреть сообщение
Примечания
Для дробных чисел выводите три знака после запятой.
Наверное, это не просто так написано?

Цитата Сообщение от Lisi4e4ka Посмотреть сообщение
но у меня выводит такую ошибку " Line 1 differs: out:
>Test : TestCase(number_1=12, number_2=13, result_sum=25, result_sub=-1, result_mul=156, result_div='0.923', calculate_button='->') has not passed<
corr:
>OK<"
сравните:
Code
1
2
3
4
12/13
0.9230769230769231
f"{12/13:.3f}"
'0.923'
Сделайте в этой части, например, так:
Python
1
2
3
4
5
6
7
8
9
...
        try:
            d = x / y
            if not d.is_integer():
                d = f"{d:.3f}"
            self.result_div.display(d)
        except ZeroDivisionError:
            self.result_div.display('Error')
...
0
8 / 8 / 0
Регистрация: 17.09.2023
Сообщений: 58
17.09.2023, 09:16
Заглянул в первый попавшийся мануал
Python
1
2
3
4
5
def main():
    app = QtWidgets.QApplication(sys.argv)  # Новый экземпляр QApplication
    window = ExampleApp()  # Создаём объект класса ExampleApp
    window.show()  # Показываем окно
    app.exec_()  # и запускаем приложение
а у вас

Python
1
2
3
4
app = QApplication(sys.argv)
    ex = MiniCalcularor()
    ex.show()
    sys.exit(app.exec())

позвольте по любопытствовать зачем вам команда sys.exit()?
Вы хоть знаете что это такое?
0
Любознательный
 Аватар для YuS_2
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
17.09.2023, 09:17
Цитата Сообщение от Lisi4e4ka Посмотреть сообщение
y = float(self.number_2.text())
и да, здесь не требуется float, по условию, там должно быть int
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.09.2023, 09:17
Помогаю со студенческими работами здесь

Из QT в PyQt
Здравствуйте, подскажите правильно ли у меня получился перевод из QT в PyQt? Интересует именно выполнение класса QCoreApplication и...

Paint pyqt
Добрый вечер, помогите разобраться с кодом я в Python (pyqt, Desinger) новичок. Можете обяснить по подробнее с &quot;Class Canvas&quot;...

Настройка PyQT
Ребята, установил QT designer Скачал PyQt4 чтобы перекодить файл из дизайнера в пайтон файл нужно вызвать команду pyuic4, но пишет “не...

PyQt и pandas
Здравствуйте, есть ли возможность сделать на main виджете диалог, при помощи которого пользователь выбирает .csv файл для последующей...

Проблемы с pyqt
Здравствуйте, я делаю небольшую программу с библиотекой pyqt5 и у меня возникли 2 проблемы, искал ответ, но увы не смог найти Первая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru