Как сделать калькулятор в python с графическим интерфейсом
Перейти к содержимому

Как сделать калькулятор в python с графическим интерфейсом

  • автор:

Простой калькулятор с графическим интерфейсом

Author24 — интернет-сервис помощи студентам

Не могу разобраться как написать программу в которой нужно сделать текстовыми полями (Text), 4 переключателя Radiobutton и кнопкой button. В текстовые поля записываются 2 числа по нажатию на кнопку появляется сообщение в котором написана сумма, разность, произведение, частное двух чисел, в текстовые поля в зависимости от активного переключателя.

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Калькулятор с графическим интерфейсом
Напишите программу «Полноценный калькулятор» с графическим пользовательским интерфейсом на PyQT. .

Арифмометр с графическим интерфейсом
Напишите программу «Арифмометр» с графическим пользовательским интерфейсом на PyQT. На форме.

Разработать программу с графическим интерфейсом
Разработать программу со следующим графическим интерфейсом, предусмотреть обработку возможных.

Напишите программу с графическим пользовательским интерфейсом
Условия задачи: Напишите программу с графическим пользовательским интерфейсом на PyQT. При старте.

42 / 44 / 16
Регистрация: 15.01.2021
Сообщений: 432

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
from tkinter import * class Main(Frame): def __init__(self, root): super(Main, self).__init__(root) self.build() def build(self): self.formula = "0" self.lbl = Label(text=self.formula, font=("Times New Roman", 21, "bold"), bg="#000", foreground="#FFF") self.lbl.place(x=11, y=50) btns = [ "C", "DEL", "*", "=", "1", "2", "3", "/", "4", "5", "6", "+", "7", "8", "9", "-", "(", "0", ")", "X^2" ] x = 10 y = 140 for bt in btns: com = lambda x=bt: self.logicalc(x) Button(text=bt, bg="#FFF", font=("Times New Roman", 15), command=com).place(x=x, y=y, width=115, height=79) x += 117 if x > 400: x = 10 y += 81 def logicalc(self, operation): if operation == "C": self.formula = "" elif operation == "DEL": self.formula = self.formula[0:-1] elif operation == "X^2": self.formula = str((eval(self.formula))**2) elif operation == "=": self.formula = str(eval(self.formula)) else: if self.formula == "0": self.formula = "" self.formula += operation self.update() def update(self): if self.formula == "": self.formula = "0" self.lbl.configure(text=self.formula) if __name__ == '__main__': root = Tk() root["bg"] = "#000" root.geometry("485x550+200+200") root.title("Калькулятор") root.resizable(False, False) app = Main(root) app.pack() root.mainloop()

код не мой, я его просто давно скопировал, и у меня лежит. Источник не помню
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Python программа c графическим интерфейсом для Ubuntu
Подскажите пожалуйста, как делаются Python-программы c графическим интерфейсом для Ubuntu? Какие.

Напишите программу с графическим интерфейсом
Напишите программу с графическим интерфейсом. В окне программы должна располагаться надпись: “ВЫ.

Шифрование с графическим интерфейсом в tkinter
Добрый день! Моя задача: основное окно — набор кнопок с выбором нужной функции для кодирования.

Написать приложение с графическим интерфейсом
Если говорить кратко , нужно писать программу , а точнее графический интерфейс по заданию в файле.

Создать программу парсер с графическим интерфейсом
Здравствуйте. Суть программы в том, что она будет брать информацию с сайтов посвященных.

Или воспользуйтесь поиском по форуму:

Простой GUI калькулятор на Python #1. Дизайн приложения

Штош. Наверное, каждый начинающий программист после «Hello, world!» хочет написать какой-нибудь простенький проект. Почти всегда в голову приходит идея создания калькулятора. Но консольный калькулятор — это как-то скучно и просто. Хочется сделать приложение вот прямо как в системе. Ну или хотя бы что-то похожее.

В этой серии статей я научу вас делать простой кроссплатформенный десктопный калькулятор. Здесь не будет тригонометрических функций, процентов, интегралов и других полезных вещей. Вы сможете добавить их по своему желанию.

Мы будем использовать язык Python, фреймворк Qt, библиотеку PySide6, сразу установим её:

pip install PySide6

Qt Designer

Создавать интерфейс мы будем в приложении Qt Designer. Его можно скачать отдельно или найти в папке установленного PySide. Для этого перейдем по пути:

Создаем Main Window, т.е. главное окно приложения.

Сразу убираем ненужные menubar и statusbar.

Название приложения можно изменить в свойстве главного окна windowTitle.

Элементы калькулятора

Перетащим нужные элементы в интерфейс. В нашем калькуляторе будет поле ввода Line Edit.

Label с временным выражением над этим полем ввода.

Grid Layout для кнопок.

Просто закинем эти элементы и выберем Lay Out Vertically для центрального виджета.

Теперь закинем кнопки в Grid Layout, у меня будет 4 колонки и 5 рядов. Чтобы скопировать и вставить элемент, можно перетащить его с зажатой клавишей Ctrl.

Поставим текст во все кнопки. Для Backspace мы позже поставим иконку.

Проставим горячие клавиши для всех кнопок, кроме Clear и отрицания. За это отвечает свойство shortcut. К сожалению, в Qt Designer нельзя указать несколько горячих клавиш для одной кнопки. Хотелось бы, чтобы клавиши «Enter», «Return» и » full-width «>

Запишем 0 в Line Edit и выберем правое горизонтальное выравнивание для текста.

Нам нужно сделать так, чтобы пользователь не мог вводить что попало в это поле, чтобы он мог его только читать. Для этого существует свойство readOnly.

Укажем максимальную длину в 16 символов, как в калькуляторе Windows.

Запишем в лейбл какое-нибудь выражение и поставим правое выравнивание.

Чтобы посмотреть превью дизайна используйте сочетание клавиш Ctrl + R.

Давайте назовем элементы, чтобы в коде было проще обращаться к ним.

Размерная политика элементов

Вы спросите: «Почему интерфейс так плохо выглядит?». Все потому, что у элементов не настроена вертикальная политика. Для лейбла и поля поставим Maximum.

Конечно же не забываем сохранить файл интерфейса. Он имеет расширение ui . Обычно я называю файл design.ui

Для всех кнопок поставим Expanding.

Стилизация калькулятора

Сначала нужно определиться с цветовой палитрой. Я буду использовать 4 цвета:

  1. Почти черный #121212 для фона.
  2. Белый #FFF для текста кнопок и поля ввода.
  3. Серый #666 для фона кнопок при наведении.
  4. Серый посветлее #888 для текста временного выражения и фона кнопок при нажатии.

В Qt Designer поддерживается язык css. Напишем простенький stylesheet для главного окна. Для всего виджета указываем белый цвет текста и почти черный цвет #121212 для фона.

Я буду использовать бесплатный шрифт Rubik из библиотеки Google Fonts. Он довольно приятный.

QWidget

Давайте посмотрим, что получается.

Давайте изменим кнопки на плоские с прозрачным фоном.

QPushButton

Теперь напишем изменение фона кнопок при наведении и нажатии. При наведении цвет фона будет меняться на серый #666 , при нажатии на серый #888.

QPushButton:hover < background-color: #666; >QPushButton:pressed

Посмотрим на результат.

Стили для Line Edit и Label

Сначала разберемся с Line Edit. Поставим размер шрифта 40pt и уберем границы. Я не буду делать какие-то изменения при наведении и нажатии, потому что пользователь не может взаимодействовать с этим полем.

font-size: 40pt; border: none;

Для лейбла укажем только цвет #888 . С этим элементом пользователь тоже не может взаимодействовать.

color: #888;

Иконки

Теперь зайдем на Google Icons и возьмем черную иконку калькулятора и белую иконку backspace. Я возьму Sharp иконки с размером 24 пикселя. Формат выбирайте на ваше усмотрение. По опыту скажу, что лучше SVG. И лучше оно не только в том, что оно без труда масштабируется без потери качества (векторная графика), но еще и скачивается одним файлом. При скачивании PNG вам нужно будет распаковать архив, зайти в одну из двух папок и вытащить саму иконку.

В статье я скачивал PNG, не делайте так. Я думал, что Qt Designer не поддерживает иконки с векторной графикой, даже не попробовав.

Создадим файл ресурсов:

Resource Browser > Edit Resources > New Resource File.

Я сохранил файл с названием files.qrc . Добавим префикс для иконок.

Закинем туда наши две иконки.

Поставим иконку Backspace:

icon > choose Resource

Поставим размер 24 x 24 пикселя в свойстве iconSize.

То же самое проделаем для иконки приложения.

Финальные штрихи

Почти готово. Убираем текст из лейбла. Ставим размер главного окна. У меня будет 300 на 500 пикселей. Такой же размер поставлю минимальным для приложения.

Еще добавлю такую фичу — курсор «указывающая рука» для кнопок. Поставлю только для одной кнопки, сейчас доделаем в коде.

Редактируем интерфейс в коде

Файл интерфейса представляет собой файл с xml разметкой. Мы можем найти блок кода с указывающей рукой, введя в поиске по коду Pointing

 PointingHandCursor 

Заметим, что этот блок кода идет после блока размерной политики. Поэтому нам нужно заменить:

  0 0   PointingHandCursor 

В современных редакторах это сделать очень просто. Например, в VS Code нужно нажать Ctrl + H.

Впишем нужные блоки кода и нажмем Replace All (Ctrl + Alt + Enter).

Проверяем в дизайне.

Дизайн сделан, поздравляю!

Конвертируем файл ресурсов и интерфейса

Для начала нам нужно конвертировать файл ресурсов в питоновский файл. Для этого напишем в терминале:

pyside6-rcc «название файла ресурсов.qrc» > «название файла ресурсов_rc.py»

pyside6-rcc files.qrc > files_rc.py

Теперь конвертируем в Python файл интерфейса. Для этого введем в терминал тот же самый синтаксис, но теперь используем pyside6-uic:

pyside6-uic design.ui > design.py

Если у вас на выходе получаются файлы с кодировкой UTF-16 , конвертируйте их в UTF-8 во избежание дальнейших проблем.

Штош, в следующей статье напишем код для главного функционала калькулятора. До встречи.

Калькулятор

Многие программисты стараются изучать языки программирования с помощью написания достаточно простых программ. Один из вариантов – написание калькулятора. Конечно, можно посчитать в отладчике Python или запустив консоль. Но гораздо лучше написать на python свой калькулятор с графическим интерфейсом.

Считаем в консоле

Чтобы посчитать математические выражения можно запустить консоль. Запустить python. После этого набираем математические выражения и получаем ответ. Для этого даже не надо уметь программировать.

Делаем простой калькулятор

Лучше всего закреплять свои знания по программированию с помощью написания простых программ. Таких приложений можно придумать много – календарь, программа для хранения заметок, получение прогноза погоды.

Можно написать программу, которая делает скриншоты и сохраняет полученные изображения в папку. В любом случае, надо выбрать какое-нибудь не сложное задание, чтобы не закопаться в нем. Потом его можно будет расширить и сделать по-настоящему полезное приложение.

В нашем случае мы разберем, как создать простой графический калькулятор на Python 3. Для реализации графического интерфейса воспользуемся стандартным пакетом Tkinter. Он входит в состав Python 3. Соответственно, если у вас установлен Python, то дополнительно не надо ничего устанавливать.

В первых строках файла calculator.py подключаем библиотечные функции:

  • Tkinter для графического интерфейса;
  • Decimal для вычислений с большей точность, так как точности float не достаточно.

Импорт библиотек и исходные данные

Создаем окно приложения — объект Tk с заголовком Calculator. Во вложенном кортеже buttons будут храниться обозначения для кнопок. В список stack будем добавлять введенные числа и операции, которые надо совершить. activeStr предназначен для хранения набираемого числа.

from tkinter import * from decimal import * root = Tk() root.title('Calculator') buttons = (('7', '8', '9', '/', '4'), ('4', '5', '6', '*', '4'), ('1', '2', '3', '-', '4'), ('0', '.', '=', '+', '4') ) activeStr = '' stack = []

Вычисление результата

Функция calculate получает из списка stack операнды и операцию которую над ними надо произвести. Результат отображается в надписи label. Получать из списка строки будем с помощью метода pop.

def calculate(): global stack global label result = 0 operand2 = Decimal(stack.pop()) operation = stack.pop() operand1 = Decimal(stack.pop()) if operation == '+': result = operand1 + operand2 if operation == '-': result = operand1 - operand2 if operation == '/': result = operand1 / operand2 if operation == '*': result = operand1 * operand2 label.configure(text=str(result))

Обработка нажатия

В функции click выполняется обработка нажатой клавиши. В качестве ее аргумента передается текст, отображаемый на кнопке, которую нажали. Хотелось бы хранить вводимое значение прямо в надписи, а не создавать для этого отдельную переменную. Но так не получается из-за алгоритма работы. После того как посчитан результат, он записывается в надписи. При попытке после этого начать вводить новое число, оно бы дописывало прежний результат.

В списке с операторами и командами для калькулятора не обязательно их будет 3. Но при обработке с помощью метода pop, будут рассматриваться 3 последних введенных значения. А после проведения расчета список очистится. Далее в него добавляется полученный результат, на случай если пользователь нажмет на калькуляторе клавишу операции сразу, а не будет вводить новое число.

def click(text): global activeStr global stack if text == 'CE': stack.clear() activeStr = '' label.configure(text='0') elif '0' = 2: stack.append(label['text']) calculate() stack.clear() stack.append(label['text']) activeStr = '' if text != '=': stack.append(text) else: if text != '=': stack.append(label['text']) stack.append(text) activeStr = '' label.configure(text='0')

Внешний вид

Теперь займемся оформлением внешнего вида калькулятора и зададим обработку нажатия кнопок. Создаем надпись для вывода набираемых значений и результатов. В цикле создаем кнопки. Расположение кнопок и надписи осуществляется в табличном виде с помощью упаковщика grid. И в завершении запускаем цикл обработки событий mainloop.

label = Label(root, text='0', width=35) label.grid(row=0, column=0, columnspan=4, sticky="nsew") button = Button(root, text='CE', command=lambda text='CE': click(text)) button.grid(row=1, column=3, sticky="nsew") for row in range(4): for col in range(4): button = Button(root, text=buttons[row][col], command=lambda row=row, col=col: click(buttons[row][col])) button.grid(row=row + 2, column=col, sticky="nsew") root.grid_rowconfigure(6, weight=1) root.grid_columnconfigure(4, weight=1) root.mainloop()

У надписи выставлена ширина 35, для того, чтобы оформление кнопок подстраивалось под надпись. И в результате кнопки при этом значении лучше выглядят.

Для того, чтобы кнопки правильно работали, пришлось для каждой из кнопок создать свою функцию с помощью lambda.

По аналогии приведенного кода python калькулятора можно сдель, допустим, календарь. Для этого надо будет запрашивать текущую дату у операционной системы. Открывать нужный месяц, рассчитывать какие числа выпадут на понедельники, какой год високосный. Сделать возможность менять год и месяцы.

IT для детей: как сделать Калькулятор в «Пайтон»

IT для детей: как сделать Калькулятор в «Пайтон»IT для детей: как сделать Калькулятор в «Пайтон»IT для детей: как сделать Калькулятор в «Пайтон»IT для детей: как сделать Калькулятор в «Пайтон»IT для детей: как сделать Калькулятор в «Пайтон»IT для детей: как сделать Калькулятор в «Пайтон»IT для детей: как сделать Калькулятор в «Пайтон»IT для детей: как сделать Калькулятор в «Пайтон»IT для детей: как сделать Калькулятор в «Пайтон»

Неочевидный плюс изучения ИТ в раннем возрасте кроется в том, что дети гораздо лучше усваивают информацию. Если начать сейчас, то в будущем эти знания помогут стать востребованным специалистом еще быстрее.

В онлайн-школе программирования «Пиксель» можно изучать не только высокоуровневые языки, такие как C# и Python. Для начала можно отправить ребенка на обучение Scratch, Kodu или даже на курсы компьютерной грамотности. На этих курсах опытные специалисты поделятся своими знаниями о компьютере и его периферии, объяснят, почему в этом устройстве кроме материнской платы, памяти и жесткого диска нужен кулер и охлаждение. Ребенок также узнает, как правильно очищать системный блок и о том, какие типы ОЗУ существуют.

Также дети узнают как можно ускорить работу компьютера встроенными средствами операционной системы, какие приложения можно без страха и вреда удалить, а также как переустановить ОС.

Это базовые знания, на основании которых можно изучать более сложные направления, например Python, Scratch, Lua, освоить компьютерную графику и заняться 3D-моделированием в Blender.

Также напоминаем, что школа «Пиксель» имеет свой Youtube-канал, где доступно множество уроков как по кодингу, так и по другим направлениям. Бесплатно и в удобном режиме юный кодер может изучить 3D-моделирование, создание объектов в «Майнкрафт», нарисовать питомца в Scratch и т. д. Преподаватели школы в удобном формате доступно объясняют все нюансы кодинга, особенности создания сайтов, рисования анимации и т. д.

Такие уроки позволяют осваивать направление кодинга и постепенно развиваться в ИТ-сфере. Но для полного погружения в мир ИТ рекомендуется записаться на курсы школы программирования «Пиксель». Уроки здесь проходят в очном и онлайн формате. Ребята могут заниматься лично с преподавателем или в небольших группах, чтобы педагог смог уделить внимание каждому.

При этом не нужно иметь навыков в программировании, рисовании, анимации или моделировании — специалисты научат даже новичка. Главное, чтобы ваш ребенок сам хотел развиваться в ИТ-сфере.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *