Напиши калькулятор на Пайтон с хорошим визуалом и объясни для чего каждая строчка кода
Ответ нейросети
14 марта 2025 17:53
Давайте напишем простой калькулятор на языке Python с графическим интерфейсом, используя библиотеку Tkinter. Я объясню каждую строчку кода, чтобы вы поняли, как он работает. Этот калькулятор будет выполнять основные арифметические операции: сложение, вычитание, умножение и деление.
Код калькулятора
import tkinter as tk
def click(event):
current_text = entry.get()
if event.char.isdigit() or event.char in "+-*/.":
entry.insert(tk.END, event.char)
elif event.char == '\r':
try:
result = eval(current_text)
entry.delete(0, tk.END)
entry.insert(tk.END, str(result))
except Exception as e:
entry.delete(0, tk.END)
entry.insert(tk.END, "Ошибка")
# Создаем главное окно
root = tk.Tk()
root.title("Калькулятор")
# Создаем текстовое поле для отображения ввода и результата
entry = tk.Entry(root, width=20, font=('Arial', 24), borderwidth=2, relief='groove')
entry.grid(row=0, column=0, columnspan=4)
# Обработчик событий для текстового поля
entry.bind('<Key>', click)
# Создаем кнопки для калькулятора
buttons = [
'7', '8', '9', '/',
'4', '5', '6', '*',
'1', '2', '3', '-',
'0', '.', '=', '+'
]
row_value = 1
column_value = 0
for button in buttons:
b = tk.Button(root, text=button, font=('Arial', 18), height=2, width=4)
b.grid(row=row_value, column=column_value)
column_value += 1
if column_value > 3:
column_value = 0
row_value += 1
# Обработчик нажатия на кнопку '='
def calculate():
try:
result = eval(entry.get())
entry.delete(0, tk.END)
entry.insert(tk.END, str(result))
except Exception:
entry.delete(0, tk.END)
entry.insert(tk.END, "Ошибка")
# Связываем кнопку "=" с функцией calculate
buttons[-1].config(command=calculate)
# Запускаем главный цикл
root.mainloop()
Объяснение кода
Импортируем библиотеку:
import tkinter as tkЗдесь мы импортируем модуль Tkinter, который позволяет создать графический интерфейс для нашего приложения.
Функция
click:def click(event): ...Эта функция обрабатывает нажатия клавиш на клавиатуре. Мы используем
event, чтобы узнать, какую клавишу нажали.Получаем текущий текст:
current_text = entry.get()Здесь мы получаем текст, который уже введен в текстовом поле.
Проверяем символы:
if event.char.isdigit() or event.char in "+-*/.": entry.insert(tk.END, event.char)Мы проверяем, является ли нажатый символ цифрой или одним из операторов. Если да, то добавляем его в текстовое поле.
Обработка нажатия Enter:
elif event.char == '\r': ...Если пользователь нажал Enter, мы пытаемся вычислить выражение.
Создаем главное окно:
root = tk.Tk() root.title("Калькулятор")Создаем главное окно приложения и устанавливаем его заголовок.
Создаем текстовое поле:
entry = tk.Entry(root, width=20, font=('Arial', 24), borderwidth=2, relief='groove')Создаем текстовое поле, где пользователи могут вводить числа и операторы.
Размещаем текстовое поле:
entry.grid(row=0, column=0, columnspan=4)Используем метод
gridдля размещения текстового поля в окне.Обрабатываем события для текстового поля:
entry.bind('<Key>', click)Здесь мы связываем все нажатия клавиш с функцией
click.Создаем кнопки:
buttons = [...]Создаем список с символами кнопок калькулятора.
Цикл для создания и размещения кнопок:
for button in buttons: ...Здесь мы перебираем список
buttonsи создаем кнопки для каждой цифры и операции.Создаем функцию для вычисления:
def calculate(): ...Эта функция вычисляет сумму и выводит результат в текстовое поле.
Связываем кнопку "=" с функцией:
buttons[-1].config(command=calculate)Устанавливаем кнопку "равно" для выполнения вычислений, используя функцию
calculate.Запускаем главный цикл:
root.mainloop()Это основной цикл интерфейса, который запускает приложение и ждет взаимодействия с пользователем.
Заключение
Таким образом, мы создали простой калькулятор на Python с графическим интерфейсом. Каждая строчка кода была объяснена, чтобы вы могли понять, как все работает. Если у вас есть дополнительные вопросы по коду или вы хотите добавить дополнительные функции, не стесняйтесь спрашивать!
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



