Найти в Дзене

Как сделать калькулятор на Python?

Оглавление

В этой статье мы напишем приложение “Калькулятор” и оформим его визуально. Сделать это можно при помощи Python и любого редактора кода.

Содержание:

  1. Импортируем библиотеку Tkinter
  2. Указываем разрешение, делаем заголовок
  3. Создаем виджет Frame(), отображаем его методом grid()
  4. Добавляем текстовое поле, указываем шрифты, начертания и т.д.
  5. Делаем кортеж, где будут храниться все кнопки
  6. Создаем кнопку “С”
  7. Добавляем другие кнопки
  8. Создаем функцию btn_click(), указываем аргумент item, работаем с переменной
  9. Задаем правильное условие
  10. Работаем над очисткой поля
  11. С чем могут возникнуть проблемы?

Для наглядности добавлены картинки, откуда можно все переписать и проверить отступы.

Шаг 1 - Импортируем библиотеку Tkinter

Это делается при помощи команды “from tkinter import *”.

Tkinter работает с библиотекой Tk. В ней содержатся элементы графического интерфейса - кнопки, флажки, окна и т.д.

Шаг 2 - Указываем разрешение, делаем заголовок

Это делается при помощи следующих команд:

root = Tk()

root.geometry("268x288")

root.title("Калькулятор")

root.resizable(0, 0)

root.mainloop()

-2

Подробнее:

root = Tk() - строка создает окно приложения.

root.geometry("268x288") - здесь указывается разрешение.

root.title("Калькулятор") - это название.

root.resizable(0, 0) - запрещает менять разрешение данного окна. Калькулятор нельзя будет развернуть.

root.mainloop() - запускает обработку событий.

Шаг 3 - Создаем виджет Frame(), отображаем его методом grid()

Виджет - строительный блок.

Виджет Frame() - место, где хранятся другие виджеты.

Метод grid() - создает специальную сетку, куда будет помещен виджет.

Добавляем две строки кода:

frame_input = Frame(root)

frame_input.grid(row=0, column=0, columnspan=4, sticky="nsew")

-3

root.mainloop() должна быть в самом низу.

Шаг 4 - Добавляем текстовое поле, указываем шрифты, начертания и т.д.

Через одну строку от фрейма вводим команду:

input_field = Entry(frame_input, font='Arial 15 bold', width=24, state="readonly")

input_field.pack(fill=BOTH)

Пояснения:

input_field = Entry(frame_input, font='Arial 15 bold', width=24, state="readonly") - задаем параметры значениям.

input_field.pack(fill=BOTH) - здесь используем специальный тип заполнения.

Шаг 5 - Делаем кортеж, где будут храниться все кнопки

Здесь код выглядит так:

buttons = (('7', '8', '9', '/'),

('4', '5', '6', '*'),

('1', '2', '3', '-'),

('0', '.', '=', '+')

)

expression = ""

-4

В таком же порядке они будут расположены в самом калькуляторе. Если хотите - можете прописать их вручную и поменять местами.

Шаг 6 - Создаем кнопку “С”

Она будет очищать текстовое поле. Вводим:

button = Button(root, text='C', command=lambda: bt_clear())

button.grid(row=1, column=3, sticky="nsew")

-5

Пояснение:

button = Button(root, text='C', command=lambda: bt_clear()) - задаем свойства кнопки.

button.grid(row=1, column=3, sticky="nsew") - указываем местоположение кнопки. У нашего калькулятора есть ячейки, при помощи sticky="nsew" мы заполняем ее полностью.

Шаг 7 - Добавляем другие кнопки

Добавляем основные кнопки калькулятора при помощи кода:

for row in range(4):

for col in range(4):

Button(root, width=2, height=3, text=buttons[row][col],

command=lambda row=row, col=col: btn_click(buttons[row][col])).grid(row=row + 2, column=col, sticky="nsew", padx=1, pady=1)

-6

Кнопки появились, но они еще не работают.

Шаг 8 - Создаем функцию btn_click(), указываем аргумент item, работаем с переменной

Под from tkinter import * пишем код:

def btn_click(item):

global expression

try:

input_field['state'] = "normal"

expression += item

input_field.insert(END, item)

except:

pass

-7

Сейчас мы добавили функцию. Это такой параметр, который принимает аргумент, а потом возвращает значение. Также мы сделали переменную expression глобальной. Теперь можно получить ее из любого места в коде.

Шаг 9 - Задаем правильное условие

После введения данной части кода при нажатии кнопки “равно” результат будет подсчитываться:

if item == '=':

result = str(eval(expression[:-1]))

input_field.insert(END, result)

expression = ""

input_field['state'] = "readonly"

-8

Шаг 10 - Работаем над очисткой поля

После получения ответа поле нужно будет очищать. Делается это при помощи следующего кода:

def bt_clear():

global expression

expression = ""

input_field['state'] = "normal"

input_field.delete(0, END)

input_field['state'] = "readonly"

-9

Выше уже было прописано, что кнопка “C” называется bt_clear(). Теперь мы прописали для нее условия.

С чем могут возникнуть проблемы?

Вопрос: написал код, но калькулятор не открывается или работает некорректно, что делать?

Ответ: скорее всего, проблема в отступах. Код был проверен.

Вопрос: у меня проблемы с Tkinter, как их решить?

Ответ: Откройте командную строку (Win + R, в поле введите cmd) и напишите pip install tkinter. Второй вариант - переустановить Python. Третий - скомбинировать два вышеописанных способа.

Мы показали лишь небольшую часть возможностей Python. У CODDY есть курсы, где учат делать игры, ботов и программы на данном языке. Приходите, мы ждем.

Наука
7 млн интересуются