Добавлен: 12.12.2023
Просмотров: 43
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Приложение должно запускаться на компьютере без необходимости установки каких-либо сторонних программ.
Графический интерфейс должен быть доступным для понимания пользователем и корректно отображать вычисления и кнопки.
Должны присутствовать экранные кнопки для закрытия и сворачивания приложения.
Приложение должно иметь свое имя и уникальную иконку.
После составления требования можно приступать к написанию приложения.
Шаги написания приложения
Прежде чем приступить к написанию приложения, необходимо определить какая среда разработки, окружение и библиотеки будут использованы при написании приложения. Средой разработки является – PyCharm, окружением – Conda, также будут использоваться стандартная библиотека Python 3.7 вместе с tkinter и ttkthemes для работы с графическим интерфейсом.
Первым шагом необходимо создать проект (изображение 6) который будет являться основой для работы в PyCharm.
Изображение 6 – Окно создания проекта в PyCharm.
После создания проекта в папке проекта необходимо создать файл с расширение .py в котором и будет записан весь код. В данном случае это будет файл calculator.py (Изображение 7).
Изображение 7 – Создание файла с расширением .py.
После создания файла приступим непосредственно к разработке, в первую очередь необходимо импортировать и настроить библиотеки tkinter и ttkthemes для создания “черновика” графического интерфейса приложения. Tkinter является встроенной библиотекой, для установки ttkthemes нужно использовать команду pip install ttkthemes в терминале Python
Далее используя операторы from и import импортируем библиотеки в текущий проект (изображение 8).
Изображение 8 – Код импорта библиотек.
Затем задаем параметры для окна приложения используя библиотеку ThemedTk (изображение 9). Где root = окно приложения.
Изображение 9 – Код задания параметров для окна приложения.
После задаем параметры размера поля ввода и выведения результата вычислений, где e = поле ввода чисел (изображение 10).
Изображение 10 – Код размера поля ввода и выведения результата вычислений.
Далее используя оператор def и button_click делаем возможным выведение результата выражения в поле ввода (изображение 11) STR значений. Также здесь используются объекты e.delete и e.insert которые будут описаны далее.
Изображение 11 – Код задания условия поля ввода и выведения результата вычислений.
Далее используя def задаем кнопку очистки поля ввода (изображение 12).
Изображение 12 – Код кнопки очистки поля.
Далее используя оператор def и глобальные переменные f_num и math, задаем значения кнопок математических действий плюс, минус, умножить, разделить (изображение 13)
Изображение 13 – Код кнопок плюс, минус, умножить, разделить.
Далее используя оператор if и def задаем условия для выведения ответа на экран при нажатии кнопки равно (изображение 14).
Изображение 14 – Код кнопки равно.
Далее задаем для каждой кнопки текстовое значение и функцию кнопки которое в последствие будет использовано пользователя для идентификации каждой кнопки (изображение 15)
Изображение 15 – Код задания кнопкам текстовых значений.
Далее используя гридовую систему выводим кнопки на экран как графические элементы (изображение 16).
Изображение 16 – Код вывода кнопок как графических элементов.
Затем добавляем строку для создания петли выполнения кода, чтобы приложение автоматически не закрывалось (изображение 17).
Изображение 17 – Код создание цикла работы приложения.
После завершения написания кода необходимо сохранить файл .py, затем открыть терминал Python и ввести $ pip install auto-py-to-exe, что позволит установить конвертер из .py в формат .exe. После установки конвертера, используя терминал ввести python -m auto_py_to_exe, данная команда откроет окно Auto Py To Exe, выполнить настройку (изображение 18), по нажатию кнопки Convert to exe программа произведет конвертацию файла в формат .exe и откроет папку с данным файлом (изображение 19).
Изображение 18 – Настройка Auto Py to Exe.
Изображение 19 – Содержание папки с .exe файлом.
При открытии файла приложение имеет вид, продемонстрированный на изображение 20. Данный файл может быть распространен отдельно и не требует каких-либо предустановленных приложений или интерпретаторов. Также в приложение 1 предоставлена ссылка на Github с полным кодом приложения и .exe файлом для запуска приложения.
Изображение 20 – GUI приложения «Калькулятор “МОИ”»
ЗАКЛЮЧЕНИЕ
Рассмотрим результаты работы целью которой являлось углубление знаний и расширение навыков по разработке алгоритмов и их реализации на персональном компьютере на примере создание калькулятора на языке Python для выполнения простейших математических вычислений. В ходе выполнения работы была изучена теоретическая база языков программирования их история, виды, принципы работы, была подробно изучена парадигма объектно-ориентированного программирования, подробно изучен и применен язык программирования Python, изучены доступные аналоги приложения, которые послужили основой для составления требований к приложению, было успешно создано портативное приложение калькулятор и описаны шаги решения поставленных задач.
СПИСОК ИСТОЧНИКОВ
-
Гавриков М. М., Иванченко А. Н., Гринченков Д. В. Теоретические основы разработки и реализации языков программирования. — КноРус, 2013. — 178 с. -
Братчиков И. Л. Синтаксис языков программирования. — Наука, 1975. — 230 с. -
Теренс Пратт, Марвин Зелковиц. Языки программирования: разработка и реализация. — 4-е издание. — Питер, 2002. -
Тимоти Бадд. «Объектно-ориентированное программирование в действии», Издательский дом "Питер", 1997. — 464 с. -
Марк Лутц. Программирование на Python / Пер. с англ. — 4-е изд. — СПб.: Символ-Плюс, 2011. — Т. I. — 992 с. -
Иан Грэхем. Объектно-ориентированные методы. Принципы и практика — 3-е изд. — М.: «Вильямс», 2004. — 880 с. -
Richard P. Gabriel – Objects Have Failed, 2002 – http://dreamsongs.com/ObjectsHaveFailedNarrative.html -
Guy L. Steele Jr. – Objects Have Not Failed, 2002 – http://dreamsongs.com/ObjectsHaveNotFailedNarr.html -
Григорий Алексеев. «Введение в Python» – https://habr.com/ru/post/450474/ -
The Zen of Python – https://www.python.org/dev/peps/pep-0020/ -
Glossary of Python – https://docs.python.org/3/glossary.html -
The Python Standard Library – https://docs.python.org/3/library/index.html -
Installing Python Modules – https://docs.python.org/3/installing/index.html -
Python Module Index – https://docs.python.org/3/py-modindex.html -
Регулярно обновляемая диаграмма истории языков программирования – https://www.levenez.com/lang/
Приложение 1
Исходный код приложения Калькулятор
from tkinter import *
from tkinter import ttk
from ttkthemes import ThemedTk
root = ThemedTk(theme='yaru') # Выбор темы
root.resizable(width=False, height=False) # Блокировка возможности изменения размера
root.title('Калькулятор "МОИ"') # Названия приложения
root.iconbitmap('C:/Users/petyhov/Desktop/CALCULATOR/calculator.ico') # Иконка приложения
e = ttk.Entry(root, width=48,) # Поле ввода чисел
e.grid(row=0, column=0, columnspan=4, padx=4, pady=4)
e.focus_set() #Фокусировка в поле ввода чисел
# Введение цифр в поле
def button_click(number):
current = e.get()
e.delete(0, END)
e.insert(0, str(current) + str(number)) # выводить STR значения чесел
# Комманда для очистки поля
def button_clear():
e.delete(0, END)
# Кнопка плюс
def button_plus():
first_number = e.get()
global f_num
global math
math = "плюс"
f_num = int(first_number)
e.delete(0, END)
# Кнопка минус
def button_minus():
first_number = e.get()
global f_num
global math
math = "минус"
f_num = int(first_number)
e.delete(0, END)
# Кнопка умножить
def button_multiply():
first_number = e.get()
global f_num
global math
math = "умножить"
f_num = int(first_number)
e.delete(0, END)
# Кнопка разделить
def button_divide():
first_number = e.get()
global f_num
global math
math = "делить"
f_num = int(first_number)
e.delete(0, END)
# кнопка равно
def button_equal():
second_number = e.get()
e.delete(0, END)
if math == 'плюс':
e.insert(0, f_num + int(second_number))
if math == 'умножить':
e.insert(0, f_num * int(second_number))
if math == 'делить':
e.insert(0, f_num / int(second_number))
if math == 'минус':
e.insert(0, f_num - int(second_number))
# Кнопки с цифрами
button_1 = ttk.Button(root, text='1', command=lambda: button_click(1))
button_2 = ttk.Button(root, text='2', command=lambda: button_click(2))
button_3 = ttk.Button(root, text='3', command=lambda: button_click(3))
button_4 = ttk.Button(root, text='4', command=lambda: button_click(4))
button_5 = ttk.Button(root, text='5', command=lambda: button_click(5))
button_6 = ttk.Button(root, text='6', command=lambda: button_click(6))
button_7 = ttk.Button(root, text='7', command=lambda: button_click(7))
button_8 = ttk.Button(root, text='8', command=lambda: button_click(8))
button_9 = ttk.Button(root, text='9', command=lambda: button_click(9))
button_0 = ttk.Button(root, text='0', command=lambda: button_click(0))
# кнопки математических выражений
button_plus = ttk.Button(root, text='+', command=button_plus)
button_equal = ttk.Button(root, text='=', command=button_equal)
button_multiply = ttk.Button(root, text='*', command=button_multiply)
button_minus = ttk.Button(root, text='-', command=button_minus)
button_divide = ttk.Button(root, text='/', command=button_divide)
# Системные кнопки
button_clear = ttk.Button(root, text='C', command=button_clear)
# выведение кнопок на экран
button_1.grid(row=3, column=0, ipady=10)
button_2.grid(row=3, column=1, ipady=10)
button_3.grid(row=3, column=2, ipady=10)
button_4.grid(row=2, column=0, ipady=10)
button_5.grid(row=2, column=1, ipady=10)
button_6.grid(row=2, column=2, ipady=10)
button_7.grid(row=1, column=0, ipady=10)
button_8.grid(row=1, column=1, ipady=10)
button_9.grid(row=1, column=2, ipady=10)
button_0.grid(row=4, column=1, ipady=10)
button_clear.grid(row=4, column=0, ipady=10)
button_equal.grid(row=4, column=3, ipady=10)
button_minus.grid(row=2, column=3, ipady=10)
button_plus.grid(row=3, column=3, ipady=10)
button_divide.grid(row=4, column=2, ipady=10)
button_multiply.grid(row=1, column=3, ipady=10)
root.mainloop() # Создание цикла приложения