Добавлен: 12.12.2023
Просмотров: 161
Скачиваний: 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, изучены доступные аналоги приложения, которые послужили основой для составления требований к приложению, было успешно создано портативное приложение калькулятор и описаны шаги решения поставленных задач.СПИСОК ИСТОЧНИКОВ
Приложение 1Исходный код приложения Калькуляторfrom tkinter import *from tkinter import ttkfrom ttkthemes import ThemedTkroot = 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_numglobal mathmath = "плюс"f_num = int(first_number)e.delete(0, END)# Кнопка минусdef button_minus():first_number = e.get()global f_numglobal mathmath = "минус"f_num = int(first_number)e.delete(0, END)# Кнопка умножитьdef button_multiply():first_number = e.get()global f_numglobal mathmath = "умножить"f_num = int(first_number)e.delete(0, END)# Кнопка разделитьdef button_divide():first_number = e.get()global f_numglobal mathmath = "делить"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() # Создание цикла приложения
Изображение 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 ttkfrom ttkthemes import ThemedTkroot = 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_numglobal mathmath = "плюс"f_num = int(first_number)e.delete(0, END)# Кнопка минусdef button_minus():first_number = e.get()global f_numglobal mathmath = "минус"f_num = int(first_number)e.delete(0, END)# Кнопка умножитьdef button_multiply():first_number = e.get()global f_numglobal mathmath = "умножить"f_num = int(first_number)e.delete(0, END)# Кнопка разделитьdef button_divide():first_number = e.get()global f_numglobal mathmath = "делить"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() # Создание цикла приложения