В этой статье мы напишем приложение “Калькулятор” и оформим его визуально. Сделать это можно при помощи Python и любого редактора кода.
Содержание:
- Импортируем библиотеку Tkinter
- Указываем разрешение, делаем заголовок
- Создаем виджет Frame(), отображаем его методом grid()
- Добавляем текстовое поле, указываем шрифты, начертания и т.д.
- Делаем кортеж, где будут храниться все кнопки
- Создаем кнопку “С”
- Добавляем другие кнопки
- Создаем функцию btn_click(), указываем аргумент item, работаем с переменной
- Задаем правильное условие
- Работаем над очисткой поля
- С чем могут возникнуть проблемы?
Для наглядности добавлены картинки, откуда можно все переписать и проверить отступы.
Шаг 1 - Импортируем библиотеку Tkinter
Это делается при помощи команды “from tkinter import *”.
Tkinter работает с библиотекой Tk. В ней содержатся элементы графического интерфейса - кнопки, флажки, окна и т.д.
Шаг 2 - Указываем разрешение, делаем заголовок
Это делается при помощи следующих команд:
root = Tk()
root.geometry("268x288")
root.title("Калькулятор")
root.resizable(0, 0)
root.mainloop()
Подробнее:
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")
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 = ""
В таком же порядке они будут расположены в самом калькуляторе. Если хотите - можете прописать их вручную и поменять местами.
Шаг 6 - Создаем кнопку “С”
Она будет очищать текстовое поле. Вводим:
button = Button(root, text='C', command=lambda: bt_clear())
button.grid(row=1, column=3, sticky="nsew")
Пояснение:
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)
Кнопки появились, но они еще не работают.
Шаг 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
Сейчас мы добавили функцию. Это такой параметр, который принимает аргумент, а потом возвращает значение. Также мы сделали переменную expression глобальной. Теперь можно получить ее из любого места в коде.
Шаг 9 - Задаем правильное условие
После введения данной части кода при нажатии кнопки “равно” результат будет подсчитываться:
if item == '=':
result = str(eval(expression[:-1]))
input_field.insert(END, result)
expression = ""
input_field['state'] = "readonly"
Шаг 10 - Работаем над очисткой поля
После получения ответа поле нужно будет очищать. Делается это при помощи следующего кода:
def bt_clear():
global expression
expression = ""
input_field['state'] = "normal"
input_field.delete(0, END)
input_field['state'] = "readonly"
Выше уже было прописано, что кнопка “C” называется bt_clear(). Теперь мы прописали для нее условия.
С чем могут возникнуть проблемы?
Вопрос: написал код, но калькулятор не открывается или работает некорректно, что делать?
Ответ: скорее всего, проблема в отступах. Код был проверен.
Вопрос: у меня проблемы с Tkinter, как их решить?
Ответ: Откройте командную строку (Win + R, в поле введите cmd) и напишите pip install tkinter. Второй вариант - переустановить Python. Третий - скомбинировать два вышеописанных способа.
Мы показали лишь небольшую часть возможностей Python. У CODDY есть курсы, где учат делать игры, ботов и программы на данном языке. Приходите, мы ждем.