DEV Community

Usmanbek-Vladimir Ahtirskiy
Usmanbek-Vladimir Ahtirskiy

Posted on

Приложение на tk

import tkinter as tk
from tkinter import messagebox

class Calculator:
def init(self):
self.window = tk.Tk()
self.window.title("Калькулятор")
self.window.geometry("300x400")
self.window.resizable(False, False)

    self.expression = ""
self.result_var = tk.StringVar()
self.create_widgets()
Enter fullscreen mode Exit fullscreen mode

def create_widgets(self):
# Поле отображения результата
result_frame = tk.Frame(self.window)
result_frame.pack(fill=tk.X, padx=5, pady=5)

result_entry = tk.Entry(
    result_frame,
    textvariable=self.result_var,
    font=("Arial", 16),
    justify="right",
    state="readonly"
)
result_entry.pack(fill=tk.X)

# Кнопки
button_frame = tk.Frame(self.window)
button_frame.pack(fill=tk.BOTH, expand=True, padx=5, pady=5)

buttons = [
    ['C', '/', '*', 'Del'],
    ['7', '8', '9', '-'],
    ['4', '5', '6', '+'],
    ['1', '2', '3', '='],
    ['0', '.', '', '']
]

for i, row in enumerate(buttons):
    for j, text in enumerate(row):
        if text:
            if text == '0':
                btn = tk.Button(
                    button_frame,
                    text=text,
                    font=("Arial", 14),
                    command=lambda t=text: self.button_click(t)
                )
                btn.grid(row=i, column=j, columnspan=2, sticky="nsew", padx=1, pady=1)
            else:
                btn = tk.Button(
                    button_frame,
                    text=text,
                    font=("Arial", 14),
                    command=lambda t=text: self.button_click(t)
                )
                btn.grid(row=i, column=j, sticky="nsew", padx=1, pady=1)

# Настройка сетки
for i in range(5):
    button_frame.grid_rowconfigure(i, weight=1)
for j in range(4):
    button_frame.grid_columnconfigure(j, weight=1)
Enter fullscreen mode Exit fullscreen mode

def button_click(self, char):
if char == 'C':
self.expression = ""
elif char == 'Del':
self.expression = self.expression[:-1]
elif char == '=':
try:
result = eval(self.expression)
self.expression = str(result)
except:
messagebox.showerror("Ошибка", "Неверное выражение")
self.expression = ""
else:
self.expression += char

self.result_var.set(self.expression)
Enter fullscreen mode Exit fullscreen mode

def run(self):
self.window.mainloop()

Enter fullscreen mode Exit fullscreen mode




Запуск калькулятора

if name == "main":
calc = Calculator()
calc.run()

Top comments (0)