Загрузка данных


import tkinter as tk
from tkinter import messagebox


class App:
    def __init__(self, root):
        self.root = root
        self.root.title("Текстовый помощник")
        self.root.geometry("400x300")
        self.root.resizable(False, False)

        main_frame = tk.Frame(root, bg="white", padx=20, pady=20)
        main_frame.pack(expand=True, fill="both")

        self.entry = tk.Entry(main_frame, font=("Arial", 12), fg="grey")
        self.entry.insert(0, "Введите текст...")
        self.entry.bind("<FocusIn>", self._clear_placeholder)
        self.entry.bind("<FocusOut>", self._add_placeholder)
        self.entry.pack(pady=(0, 20), ipady=5, fill="x")

        btn_frame = tk.Frame(main_frame, bg="white")
        btn_frame.pack()

        process_btn = tk.Button(
            btn_frame,
            text="Обработать",
            width=12,
            command=self.process_text,
            bg="#6A5ACD",
            fg="white",
            activebackground="#483D8B",
            relief="flat"
        )
        process_btn.grid(row=0, column=0, padx=5)

        clear_btn = tk.Button(
            btn_frame,
            text="Очистить",
            width=12,
            command=self.clear_all,
            bg="#B22222",
            fg="white",
            activebackground="#8B0000",
            relief="flat"
        )
        clear_btn.grid(row=0, column=1, padx=5)

    def _clear_placeholder(self, event):
        if self.entry.get() == "Введите текст...":
            self.entry.delete(0, tk.END)
            self.entry.config(fg="black")

    def _add_placeholder(self, event):
        if not self.entry.get():
            self.entry.insert(0, "Введите текст...")
            self.entry.config(fg="grey")

    def process_text(self):
        user_input = self.entry.get()
        if not user_input or user_input == "Введите текст...":
            messagebox.showwarning("Пустое поле", "Пожалуйста, введите какой-нибудь текст.")
            return

        result = ''.join([char.lower() if char.isupper() else char.upper() for char in user_input])

        messagebox.showinfo("Результат", f"Инвертированный регистр:\n{result}")

    def clear_all(self):
        self.entry.delete(0, tk.END)
        self._add_placeholder(None)


if __name__ == "__main__":
    root = tk.Tk()

    try:
        root.iconbitmap("app_icon.ico")
    except Exception:
        pass

    app = App(root)
    root.mainloop()