В этой статье рассмотрим программный код на 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()
Сейчас читают на нашем канале:
Подписывайтесь на канал и ставьте лайк, Вас ждет много полезной информации!
Мы будем рады видеть Вас в числе наших подписчиков!