python

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

Доброго времени cуток, сегодня поговорим о том как написать калькулятор на python с графическим интерфейсом. Первое – это определим список библиотек для реализации данной задачи. Всегда вначале изучения любого языка программирования – создавай калькулятор для примера и понимания языка.

Необходимые библиотеки:

  1. Tkinter
  2. math
  3. sys

Опишем, что же это за библиотеки.

Tkinter – это кроссплатформенная библиотека для разработки графического интерфейса на языке Python (начиная с Python 3.0 переименована в tkinter). Tkinter расшифровывается как Tk interface, и является интерфейсом к Tcl/Tk. Tkinter входит в стандартный дистрибутив Python.

Установка данной библиотеки через консоль:

pip install tk

Math – библиотека для математических вычислений и действий. Предустановлена в python 3 и выше точно, во 2-ой версии не знаю.

Теперь переходим к написанию кода.

from tkinter import *
from tkinter import messagebox
from tkinter import ttk
import math
import sys

Импортируем библиотеки в самом начале файла main.py – который и будем запускать.

Далее создаем функцию создания самого калькулятора и в ней же логика его работы:


def calc(key,calc_entry):
global memory
if key == "=":
#исключение написания слов
str1 = "-+0123456789.*/)("
if calc_entry.get()[0] not in str1:
calc_entry.insert(END, "First symbol is not number!")
messagebox.showerror("Error!", "You did not enter the number!")
#исчисления
elif key == "C":
calc_entry.delete(0, END)
elif key == "±":
if "=" in calc_entry.get():
calc_entry.delete(0, END)
try:
if calc_entry.get()[0] == "-":
calc_entry.delete(0)
else:
calc_entry.insert(0, "-")
except IndexError:
pass
elif key == "π":
calc_entry.insert(END, math.pi)
elif key == "xⁿ":
calc_entry.insert(END, "**")
elif key == "(":
calc_entry.insert(END, "(")
elif key == ")":
calc_entry.insert(END, ")")
elif key == "n!":
calc_entry.insert(END, "=" + str(math.factorial(int(calc_entry.get()))))
elif key == "√2":
calc_entry.insert(END, "=" + str(math.sqrt(int(calc_entry.get()))))
elif key == "Exit":
root.after(1, root.destroy)
sys.exit()
else:
if "=" in calc_entry.get():
calc_entry.delete(0, END)
calc_entry.insert(END, key)
try:
result = eval(calc_entry.get())
calc_entry.insert(END, "=" + str(result))
except:
calc_entry.insert(END, "Error!")
messagebox.showerror("Error!", "Check the correctness of data")
Отступы не забудьте. Не получилось их сохранить.
Используются функции math библиотеки и самого python такие как showerror.А вот calc_entry – это уже элемент tkinter и он создает input то есть текстовое поле, в которое мы записываем нажатые кнопки или с клавиатуры, а также и результат.
Но чего-то не хватает. Верно, есть функция. Но нет ее вызова и самое главное появления окна виджета tkinter. (window = tk() ).

def main():
root = Tk()
root.title("Calculator")
bttn_list = [
"7", "8", "9", "+", "*",
"4", "5", "6", "-", "/",
"1", "2", "3", "=", "xⁿ",
"0", ".", "±", "C",
"Exit", "π", "sin", "cos",
"(", ")", "n!", "√2", ]
calc_entry = Entry(root, width=33)
calc_entry.grid(row=0, column=0, columnspan=5)
r = 1
c = 0
for i in bttn_list:
rel = ""
cmd = lambda x=i: calc(x,calc_entry)
ttk.Button(root, text=i, command=cmd, width=10).grid(row=r, column=c)
c += 1
if c > 4:
c = 0
r += 1
root.mainloop()

Задаем кнопки в виде массива (списка) , а ниже идем по нему циклом и проверяем какая кнопка была нажата или вписана в текстовое поле и вызываем функцию calc()  – передавая необходимые параметры.

mainloop() – функция появления виджета (окна) .

Entity – текстовое поле.

Также его нужно дополнить или переделать – то есть добавить нормальный внешний вид и через библиотеки создать установочный файл.

Также проверяйте работу кода любого взятого из интернета. Может и не работать же.

Документация по tkinter

Код калькулятора

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.