Найти в Дзене
Мир технологий ✅

Создание калькулятора на Python

Оглавление

В этой статье рассмотрим программный код на Python который позволяет нам создать оконное приложение - калькулятор.

Калькулятор будет выполнять 4 арифметические операции: сложение, вычитание, умножение и деление.

Для начала работы нам понадобится среда разработки - Python, версии 3 и выше, иначе модуль tkinter работать не будет.

Начнем выполнение задания с добавления модуля tkinter.

from tkinter import *

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

После прописать удаление всех значений со строки и вставку конечного результата.

def proizv(b):
a = EntryA.get()
result = str(a)+b
EntryA.delete(0, END)
EntryA.insert(0, result)

Для функции «результат» нам необходимо получить значение со строки, удалив предыдущее значение и вставить посчитанное значение.

Функция eval() в Python используется для синтаксического анализа строки выражения, как выражения Python и последующего ее выполнения.

def res():
a = EntryA.get()
EntryA.delete(0,END)
EntryA.insert(0, eval(a))

Создаем окно самого приложения и называем его.

root = Tk()
root.title('калькулятор')

Создаем строку ввода и располагаем ее по определенным координатам, выбираем шрифт/размер и т д.

EntryA = Entry(root, width=10, font='Arial 16')
EntryA.grid(row=0, column=0, columnspan = 4)

Создаем 16 кнопок на каждый символ(число и символ операции) и располагаем их в определенном порядке для пользовательского комфорта (НЕТ).

Функция lambda — вызывает функцию добавления символов, расписанную ранее и передает в нее значение кнопки.

but1 = Button(root, text = '1', command = lambda: proizv("1") )
but1.grid(row=4, column = 0, sticky = E)
but2 = Button(root, text = '2', command = lambda: proizv("2") )
but2.grid(row=4, column = 1, sticky = E)
but3 = Button(root, text = '3', command = lambda: proizv("3") )
but3.grid(row=4, column = 2, sticky = E)

but4 = Button(root, text = '4', command = lambda: proizv("4") )
but4.grid(row=3, column = 0, sticky = E)

but5 = Button(root, text = '5', command = lambda: proizv("5") )
but5.grid(row=3, column = 1, sticky = E)

but6 = Button(root, text = '6', command = lambda: proizv("6") )
but6.grid(row=3, column = 2, sticky = E)

but7 = Button(root, text = '7', command = lambda: proizv("7") )
but7.grid(row=2, column = 0, sticky = E)

but8 = Button(root, text = '8', command = lambda: proizv("8") )
but8.grid(row=2, column = 1, sticky = E)

but9 = Button(root, text = '9', command = lambda: proizv("9") )
but9.grid(row=2, column = 2, sticky = E)

but0 = Button(root, text = '0', command = lambda: proizv("0") )
but0.grid(row=5, column = 0, sticky = E)

butp = Button(root, text = '+', command = lambda: proizv("+") )
butp.grid(row=2, column = 3, sticky = E)
butm = Button(root, text = '-' , command = lambda: proizv("-") )
butm.grid(row=3, column = 3, sticky = E)
butu = Button(root, text = '*', command = lambda: proizv("*") )
butu.grid(row=4, column = 3, sticky = E)
butd = Button(root, text = '/' , command = lambda: proizv("/") )
butd.grid(row=5, column = 3, sticky = E)

Прописываем так же, для оставшихся из 16-ти, кнопки «С» и «=», но в первом случае прописываем через раннюю функцию удаление строки, а во втором вызываем функцию «результата».

butc = Button(root, text = 'C', command = lambda: EntryA.delete(0,END) )
butc.grid(row=5, column = 1, sticky = E)
butr = Button(root, text = '=', command = res)
butr.grid(row=5, column = 2, sticky = E)

Прописываем цикл прорисовки окна программы:

root.mainloop()

Сейчас читают на нашем канале:

Подписывайтесь на канал и ставьте лайк, Вас ждет много полезной информации!

Мы будем рады видеть Вас в числе наших подписчиков!