# Визуализация калькулятора
Можно задать размер и запретить изменение размера окна, добавив соответствующие строки:
Создадим в окне визуальный элемент однострочное текстовое поле:
Теперь создадим кнопку добавив следующий код:
Добавим другие необходимые кнопки и получим следующий вид нашего калькулятора:
Код может выглядеть так:
Пример кода может быть таким:
Если смещение задать по 50 пикселей, то созданное окно может иметь вид:
Пример кода с необходимыми атрибутами для решения задачи:
При правильной полной реализации написания интерфейса результат может быть:
# Современная визуализация
Добавьте данные строки во все решения ваших калькуляторов и обратите внимания как измениться их внешний вид.
Вид калькулятора с методом pack() и виджетами ttk :
Вид калькулятора с методом place() и виджетами ttk :
Как мы видим после применения метода абсолютного позиционирования, проявляется основной недостаток: проблема масштабирования.
Вид калькулятора с методом grid() и виджетами ttk :
# Упражнения
Символы «плюс минус» и «корня» можно получить, воспользовавшись функцией print() :
Добавьте функцию для цифровых кнопок: при нажатии на кнопку в текстовом поле допечатывается соответствующая цифра.
Реализовать вывод примеров на дисплее: 23+5 и т.п.
Как построить калькулятор GUI, используя Tkinter в Python?
В этой статье сегодня мы узнаем, как создать простой калькулятор GUI, используя TKinter. Мы поймем весь код шаг за шагом.
В этой статье сегодня мы узнаем, как создать простой калькулятор GUI, используя TKinter. Мы поймем весь код шаг за шагом.
Начало работы с нашим калькулятором GUI, используя Tkinter
Прежде чем мы начнем, убедитесь, что у вас есть библиотека TKinter, установленная для Python. Tkinter – это стандартная библиотека GUI для языка программирования Python. Когда Python объединяется с TKinter, он обеспечивает быстрый и простой способ создания приложений графического пользовательского интерфейса.
TKINTER предоставляет мощный объектно-ориентированный интерфейс для TK GUI Toolkit. Если TKINTER не установлен в вашем Python, откройте Windows CMD и введите следующую команду.
Tkinter Modelbox.
MessageBox – виджет в библиотеке Tkinter Python. Он используется для отображения ящиков сообщений в приложениях Python. Этот модуль используется для отображения сообщения с использованием определенного количества функций.
Параметры :
Варианты: Есть два варианта, которые можно использовать:
Структура калькулятора GUI с использованием Tkinter
Python Tkinter Label: Этикетка используется для указания коробки контейнера, где мы можем разместить текст или изображения. Этот виджет используется для предоставления сообщения пользователям о других виджетах, используемых в приложении Python.
Падры Python: Рамка – это только виджет. Рамы в Python – это не что иное, как простые контейнеры для его дочерних элементов. Используя их, мы можем дать дочерним контейнерам Mainframes, и мы можем разделить всю рамку макета по кадрам.
Предположим, мы запустим программу, у нас есть метка в начале, а затем несколько кнопок в корневом окне. Мы можем разделить эту часть корневой окна с помощью детали E.g этикетка как одна часть, а затем кнопки в разную часть. Если мы поместим эти части в один кадр, то этот кадр станет родительским элементом. Это поможет нам упростить сложный дизайн.
После добавления кадров структура калькулятора будет похожа:
Кнопки Python: Виджет кнопки используется для добавления кнопок в приложении Python. Эти кнопки могут отображать текст или изображения, которые передают цели кнопок. Вы можете прикрепить функцию или метод к кнопке, которая называется автоматически при нажатии кнопки.
1. Определение функций
Здесь мы начнем с кодировки для кнопок.
Мы определим первую функцию имени btn_1_isclicked () Отказ Мы даем это ущербное имя, так что нам становится легче понять, что функция на самом деле делает только что посмотрела на нее.
Здесь мы хотим, когда мы нажимаем на любую кнопку номера, мы хотим, чтобы это число было отображаться на нашей этикетке и хранить его в другой переменной, чтобы она была легко рассчитана.
Мы принимаем переменную глобально, чтобы избежать проблемы с именем переменной. В Python переменная, объявленная вне функции или в глобальном объеме, известна как глобальная переменная.
Это означает, что Глобальная переменная Доступ к доступу внутри или снаружи функции. Валь вот глобальная переменная. В приведенном выше коде мы создали Val в качестве глобальной переменной и определенной btn_1_isclicked () Чтобы распечатать глобальную валюту VAL и хранить его значение.
Выполните те же шаги для всех кнопок TKINTER.
2. Создание окна для нашего калькулятора GUI с помощью TKinter
Чтобы инициализировать TKinter, мы должны создать виджет TK CORT, который является окном с строкой заголовка и другие украшения, предоставляемые оконным менеджером.
Корневое окно – это главное окно приложения в наших программах. У него есть заголовка и границы.
Они предоставляются оконным менеджером. Он должен быть создан перед любыми другими виджетами.
Геометрия Метод устанавливает размер для окна и позиционирует его на экране. Первые два параметра являются ширина и высота окна. Последние два параметра являются координатами экрана x и y.
По установке root.Resizable до (0,0) программатор не сможет изменить размер окна. Лучше использовать root.resizable (0,0), потому что он сделает калькулятор на месте.
3. Настройка форматирования метки
Метка – это окно дисплея, где вы можете разместить текст или изображения. Текст, отображаемый этим виджетом, может быть обновлен в любое время. Также можно подчеркнуть часть текста (например, для идентификации сочетания клавиш) и охватить текст по нескольким строкам.
Родитель ярлыка является корнем. Это означает, что он не будет ограничен на один кадр, но целое root Window. Затем мы поставим простой текст, который мы будем динамически изменяться по всему коду до цифровых кнопок, которые мы нажимаем, отображается на метке.
Tkinter Stringvar Помогите вам управлять значением виджета, такого как метку или запись более эффективно. Контейнер – это виджет, который Stringvar объект, связанный с. Если вы пропустите контейнер, он по умолчанию для корневого окна значение – это начальное значение, которое по умолчанию по умолчанию для пустой строки.
Якорь : Он контролирует, где текст расположен, если виджет имеет больше места, чем потребности в тексте. По умолчанию (виджет будет размещен в правом нижнем углу рамки).
TextVariable: Чтобы иметь возможность извлечь текущий текст из вашего въезда в виджете, вы должны установить эту опцию в экземпляр данных stringvar класса I.e
4. Упаковка кнопок на окне
Рамка – виджет в Python. Это очень важно для процесса группировки и организации других виджетов как-то дружелюбным способом. Он работает как контейнер, который отвечает за организацию положения других виджетов.
Он использует прямоугольные зоны на экране для организации макета и обеспечить прокладку этих виджетов.
Рамка также может использоваться в качестве класса фундамента для реализации сложных виджетов.
Мы даем имя переменной к славе как BTNROW1 Отказ Синтаксис для кадра:
Затем мы упаковываем кадр. Повторите одни и те же шаги для трех трех кадров, вызывая корневое окно.
5. Добавление кнопок в наш калькулятор GUI с помощью TKinter
Виджет кнопки используется для добавления кнопок в нашем калькуляторе GUI, используя библиотеку Tkinter в Python. Эти кнопки могут отображать текст или изображения, которые передают цели кнопок. Вы можете прикрепить функцию или метод к кнопке, которая называется автоматически при нажатии кнопки.
Рельеф: С значением по умолчанию. Вы можете установить эту опцию для любого из других стилей, таких как: затонувший, жесткий, поднятый, плоский.
команда Является ли функция или метод, который будет называться, когда кнопка нажала. Здесь мы называем Команда, Функция, которую мы создали ранее, чтобы выполнить задачу.
Мы следуем тому же методу для других кнопок тоже.
Наконец, мы входим в MainLoop. Обработка событий начинается с этого момента. MainLoop получает события из оконной системы и отправляет их в виджеты приложений. Он прекращается, когда мы нажимаем на кнопку закрытия заголовка или вызовите Quit () метод.
Заключение
В этой статье мы покрыли кнопки TKINT, кадры, этикетки и его функциональные возможности, окна TKinter, входные коробки и то, как все эти все могут быть собраны для создания приложений GUI. Понимая код, мы добились успеха в создании рабочего калькулятора GUI с использованием библиотеки TKinter и его виджетов. Надеюсь, эта статья поможет.
Оконный калькулятор на Python с Tkinter
В этой статье мы разберём как сделать калькулятор на Python с использованием библиотеки Tkinter, для создания графического интерфейса или оконного приложения.
Также можете посмотреть прошлую часть где мы познакомились с этой библиотекой, статья называется «Создание графического интерфейса в Python», думаю будет интересно.
Калькулятор на на Python с Tkinter:
Перед тем как начать работать, нужно установить все нужные компоненты, но нам нужно скачать только Tkinter, для этого как всегда для Python прописываем команду PIP.
После того как скачали можете приступать к работе, для этого переходим в ваш файл, где вы будите хранить весь код.
Первым делом нужно импортировать нужные компоненты и создать переменные которые нам пригодятся:
Первым делом мы тут как всегда всё импортируем, потом создаём приложение и задаём ему заголовок, потом создаём кортеж кнопок, где каждый картеж, это отдельная строчка кнопок в приложение.
последние мы создаём переменную activeStr, которая отвечает за наспанные числа в строчки ввода, и вторая переменная это список, чисел и команда которые нужно будет выполнить.
Дальше создадим функцию которая будет считать получившийся результат, вот как она будет выглядеть:
Как видите в начале функции мы всё раскладываем на числа которые мы получаем и знаки на которые мы нажали, потом всё зависимо от от знака мы считаем вмести эти два числа и в вставляем это в нашу строку ввода.
Теперь перейдём к функции которая будет обрабатывать клик на кнопки там всё гораздо интереснее на мой взгляд.
В начале мы тут проверяем, а нажата ли кнопка CE, если да, то тогда всё удаляем и выводим ноль, иначе если были нажаты цифры, то добавляет это всё в поле ввода, если точка нажата, то тоже добавляем в поле.
Иначе проверяем если у нас stack больше или равен двум, то считаем что у нас получилось и выводим число в поле, которое получилось и если не было нажата равно, то вставляем это число в stack.
Иначе опять проверяем не было ли нажата равно, если нет, то всё так же добавляем значения в список stack.
Последние что нам осталось, так это отрендарить всё приложение, это будет не очень cложно.
По сути мы тут будем создавать таблицу но вначале делаем поле, и потом уже саму таблицу, после того как мы это сделали, первое создаём кнопку «CE», дальше рендрим остальные кнопки, по четыре столбца, это важно, и последние задаём конфигурации для строчки и столбцов, видь как вы поняли по сути мы работаем с таблицей.
Последние запускаем событие цикл который будет отслеживать события нажатия на кнопки, или если по простому то рендерим приложение.
Вывод:
В этой не большой статье вы прочитали как сделать калькулятор на Python с использованием библиотеки Tkinter, думаю вам было интересно, но рекомендую вам самим написать этот код, и поэкспериментировать над ним, чтобы всё ещё лучше понять, как он работает.
Делаем первое простое программное обеспечение на Python
Введение в GUI
То есть вы могли бы запустить программу из командной строки и получить результат в том же самом виде. Но чтобы ваш код взаимодействовал с пользователем, необходим интерфейс для взаимодействия.
В этом уроке я собираюсь использовать Tkinter. Удобная вещь в Python состоит в том, что вы можете импортировать другие файлы в свой файл. Точно также нужно импортировать Tkinter, аналогично #include в C.
Создаем собственный калькулятор
Выше мы увидели простой графический интерфейс с кнопкой и полями. Приступим к созданию простого калькулятора Python.
Сразу скажу, что стиль кода, названия переменных очень важны и существует n-способов создания кода, но здесь мы только хотим понять суть создания ПО, а не выучить все правила правильного написания кода.
Создание GUI
Прежде чем перейти к коду, мы создадим графический интерфейс для нашего приложения-калькулятора. Для более легкого понимания мы будем использовать только одну кнопку и 4 строчки для ввода.
Воспользуемся написанным кодом выше и возьмем оттуда label, entry и button.
Создание функции
В нашем случае сразу после ввода 2 чисел и указания операции между ними должен быть показан ответ.
Начнем с кнопки Submit (см. изображение калькулятора выше).
Нам нужно дать команду кнопке, создать функцию, которая предназначена для этого.
Называем функцию process, которая после нажатия кнопки, простыми словами, обращается за данными к нашим строкам ввода и получает значения, введенные пользователем. Полученные данные мы сохраняем в number1, number2, operator.
Процесс вычислений
На этом этапе нам нужно обработать ввод, полученный от пользователя. По умолчанию полученное значение является строкой.
Для того, чтобы преобразовать тип данных мы строковую переменную оборачиваем в int.
Строка в Python обозначается как » « или ‘ ‘, то есть здесь в if мы проверяем строковый оператор, полученный от пользователя и сохраняем результат в переменной answer.
Теперь, наконец, нам нужно отправить вывод:
Код целиком будет выглядеть так:
Вы успешно написали код нашего калькулятора.
Обработка исключений
Заголовок звучит слишком техническим? Определенно нет, не переживайте. Мы всегда должны учитывать много разных моментов.
Предположим, вы сделали этот калькулятор и показали его другу. Друг вместо того, чтобы вводить целое число вводит буквы, которые должны быть там где цифры. Python выдает ошибку и сразу останавливается.
Здесь идет процесс обработки исключений Python, также во многих программах и на веб-страницах выдается предупреждение или предупреждающие сообщения.
Обработка исключений считается простым процессом. Давайте посмотрим, как это сделать в нашей программе:
Создание EXE
Чтобы создать исполняемую *.exe версию или Apk (для Android) необходимо «заморозить» (freeze) ваш код.
Есть много способов «заморозить» ваш код, но я бы предложил использовать Pyinstaller.
Шаг 1
Перейдите на сайт pyinstaller.org и установите его. Можно это сделать через pip, а можно скачать Pyinstaller.
Шаг 2
Перейдите в папку, в которой находится код, нажмите SHIFT + правую клавишу мыши и далее «Открыть в командной строке». Т.е. либо «open in command prompt» или «power shell» в зависимости от вашей версии ОС.
Добавляем свой значок для EXE-файла и помещаем всё в один файл с помощью второй команды.
Исходную программу на Python и *.exe файл вы можете скачать ниже:
На этом мы заканчиваем урок по разработке своего первого программного обеспечения на Python.
Простой GUI калькулятор на Python #2
Импортируем библиотеки, следуя стилю PEP 8:
Напишем дефолтный код для запуска любого Qt приложения с файлом дизайна. Если вам хочется подробнее узнать о работе каждой строчки кода, приглашаю посетить документацию.
Если у вас не установлен в систему шрифт Rubik, то в вашем приложении шрифт будет дефолтным. Для решения этой проблемы не нужно устанавливать шрифт в систему. Импортируем:
Теперь используем метод добавления шрифта приложения, в который передадим файл шрифта. Я сделал это в конструкторе класса.
Добавляем цифры
Метод sender() возвращает Qt объект, который посылает сигнал.
В нашем случае сигнал является нажатием кнопки. Создадим кортеж с именами кнопок-цифр.
По дефолту в поле всегда стоит 0. В этом случае, если нажимается кнопка с цифрой, текст поля заменяется на эту цифру. Получается, что при нажатии на 0 ничего не будет происходить.
Полный код метода добавления цифры
Теперь нужно соединить нажатия кнопок с этим методом. Напишем в конструкторе класса.
Изначально был такой код. Но зачем передавать цифру-аргумент, если можно взять её из кнопки?
Соединения кнопок с методом
Посмотрим на результат.
Если вам режет глаз выход цифр за границы поля, потерпите. Мы решим эту проблему в следующей статье.
Очищаем Line Edit и Label
Сделаем такой же метод для очистки только поля.
Добавляем точку
Почему вообще точка, а не запятая? Просто число с точкой можно сразу конвертировать в вещественное число, а с запятой придется еще менять знак. Да, мне лень.
Логика проста. Если точки нет в поле, значит добавляем.
Соеди что? Правильно, няем.
Добавляем временное выражение
Что вообще оно из себя представляет? Есть два типа временных выражений:
1) Число и математический знак. Грубо говоря, это память калькулятора.
Для начала нам нужно убедиться, что в лейбле нет текста. Затем ставим во временное выражение число из поля ввода + текст кнопки btn.
Еще нужно очистить поле ввода. Полный код метода:
Прикрутим пока одну кнопку сложения для теста.
Точка и незначащие конечные нули не обрезаются.
Убираем незначащие конечные нули
Сделаем статический метод для решения этой проблемы. Передавать в функцию мы будем string число, получать то же самое.
Введем переменную n, которая приводит аргумент сначала к типу float, потом к string.
Теперь добавим обрезку незначащих нулей в метод добавления временного выражения:
Старый код с передачей знака-аргумента
Получаем число из Line Edit
Запишем в переменную текст поля, уберем потенциальную точку с помощью strip().
Возвращаем float, если точка есть в переменной, иначе возвращаем int, то есть целое число.
Добавим type hint к методу. Он может возвращать только целое или вещественное число. Для этого импортируем:
Optional используем позже.
В Python 3.10 не нужно ничего импортировать.
Можно просто написать
Получаем число из Label
Если в лейбле есть текст, получаем его, разделяем по пробелам и берем первый элемент, то есть число.
Получаем знак из Label
Чтобы получить знак, нам нужно удостовериться в наличии текста в лейбле, затем получить текст из него, разделить по пробелам и вытащить последний элемент.
Вычисляем выражение
Так, калькулятор же считать должен, я правильно понимаю? Ну тогда импортируем сложение, вычитание, умножение и деление из стандартной библиотеки operator.
Теперь создадим словарь с операциями. Каждому знаку присвоим его логическую функцию.
Создадим метод вычисления.
Если в лейбле есть текст, вводим переменную результата. Обрезаем конечные нули, приводим к строке. Берем операцию из словаря по знаку, в скобках указываем с какими числами провести операцию. Заметьте, что порядок передачи аргументов важен для деления и вычитания. Сначала мы передаем число из временного выражения, а потом из поля ввода.
Добавляем в лейбл число из поля ввода и знак =
Ставим результат в поле ввода и возвращаем его.
Полный код метода вычисления
Полный код метода вычисления
Метод математической операции
Если в лейбле нет выражения, мы его добавляем, удивительно.
Если же знак равен знаку нажатой кнопки, то мы считаем выражение и добавляем в конец лейбла этот знак.
Полный код математической операции
Полный код математической операции
Старый код метода вычисления со знаком-аргументом
Помолимся за здравие Гвидо Ван Россума и запустим программу.
Почему-то не хочет дальше считать с равенством. А я вам расскажу почему. В методе добавления временного выражения нужно добавить дополнительное условие. В итоге получится «если временного выражения нет или есть равенство».
И вот еще покажу, как меняется знак, если вы постоянно промахиваетесь по кнопке.
Заключение
Штош, в следующей статье допишем калькулятор. Сделаем отрицание, backspace, несколько шорткатов для одной кнопки и обработаем ошибки. До встречи.