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


import tkinter as tk
from tkinter import messagebox
import os
import sys

# ====== НАСТРОЙКИ ======
CORRECT_PASSWORD = "12345"  # Замените на свой пароль
MAX_ATTEMPTS = 3            # Количество попыток перед выключением
# ========================

attempts_left = MAX_ATTEMPTS


def shutdown_pc():
    """Выключение компьютера"""
    try:
        if sys.platform.startswith("win"):
            # Windows
            os.system("shutdown /s /t 10")
        elif sys.platform.startswith("linux") or sys.platform == "darwin":
            # Linux / macOS
            os.system("shutdown -h now")
    except Exception as e:
        print(f"Ошибка выключения: {e}")


def check_password():
    global attempts_left

    entered = entry.get()

    if entered == CORRECT_PASSWORD:
        messagebox.showinfo("Доступ разрешён", "Пароль верный. Добро пожаловать!")
        root.destroy()
        sys.exit(0)
    else:
        attempts_left -= 1

        if attempts_left > 0:
            messagebox.showerror(
                "Ошибка",
                f"Неверный пароль!\nОсталось попыток: {attempts_left}"
            )
            entry.delete(0, tk.END)
        else:
            messagebox.showerror(
                "Доступ запрещён",
                "Превышено количество попыток.\nКомпьютер будет выключен!"
            )
            root.after(1500, lambda: (shutdown_pc(), root.destroy()))


# ====== Создание окна ======
root = tk.Tk()
root.title("Введите пароль")
root.geometry("350x180")
root.resizable(False, False)

# Запрет закрытия окна крестиком (по желанию)
root.protocol("WM_DELETE_WINDOW", lambda: None)

label = tk.Label(root, text="Введите пароль:", font=("Arial", 12))
label.pack(pady=15)

entry = tk.Entry(root, show="*", font=("Arial", 12), width=25)
entry.pack(pady=5)
entry.focus_set()

# Обработка Enter
entry.bind("<Return>", lambda event: check_password())

button = tk.Button(
    root,
    text="Войти",
    command=check_password,
    font=("Arial", 11),
    width=15
)
button.pack(pady=15)

root.mainloop()