import tkinter as tk from tkinter import messagebox from PIL import Image, ImageTk, ImageFilter from datetime import datetime class LoginWindow(tk.Tk): def __init__(self): super().__init__() self.title("ATM Otomasyonu") self.geometry("1000x1200") self.configure(bg="#F0F0F0") # Arka plan resmi bg_image = Image.open("C:/Users/abdan/OneDrive/Masaüstü/Atm/logo.png") bg_image = bg_image.filter(ImageFilter.GaussianBlur(radius=10)) bg_image = bg_image.resize((self.winfo_screenwidth(), self.winfo_screenheight()), Image.ANTIALIAS) self.bg_photo = ImageTk.PhotoImage(bg_image) bg_label = tk.Label(self, image=self.bg_photo) bg_label.place(x=0, y=0, relwidth=1, relheight=1) # Tarih ve Saat self.date_time_label = tk.Label(self, font=("Arial", 16, "bold"), bg="#F0F0F0") self.date_time_label.place(relx=0.5, rely=0.05, anchor="center") self.update_date_time() # Giriş Alanları self.entry_frame = tk.Frame(self, bg="#F0F0F0") self.entry_frame.place(relx=0.5, rely=0.4, anchor="center") self.tc_label = tk.Label(self.entry_frame, text="TC Kimlik Numarası:", font=("Arial", 14, "bold"), bg="#F0F0F0") self.tc_label.grid(row=0, column=0, padx=10, pady=10, sticky="w") self.tc_var = tk.StringVar() self.tc_entry = tk.Entry(self.entry_frame, font=("Arial", 14), bd=2, relief="groove", textvariable=self.tc_var) self.tc_entry.grid(row=1, column=0, padx=10, pady=10) self.password_label = tk.Label(self.entry_frame, text="Şifre:", font=("Arial", 14, "bold"), bg="#F0F0F0") self.password_label.grid(row=2, column=0, padx=10, pady=10, sticky="w") self.password_entry = tk.Entry(self.entry_frame, font=("Arial", 14), bd=2, relief="groove", show="*") self.password_entry.grid(row=3, column=0, padx=10, pady=10) # Butonlar self.button_frame = tk.Frame(self, bg="#F0F0F0") self.button_frame.place(relx=0.5, rely=0.7, anchor="center") self.login_button = tk.Button(self.button_frame, text="Giriş Yap", font=("Arial", 14), bd=2, relief="raised", bg="#4CAF50", fg="white", command=self.login, state="normal") self.login_button.grid(row=0, column=0, padx=10, pady=10) self.register_button = tk.Button(self.button_frame, text="Kayıt Ol", font=("Arial", 14), bd=2, relief="raised", bg="#2196F3", fg="white", command=self.RegisterButton) self.register_button.grid(row=0, column=1, padx=10, pady=10) self.forgot_password_button = tk.Button(self.button_frame, text="Şifremi Unuttum", font=("Arial", 14), bd=2, relief="raised", bg="#F44336", fg="white", command=self.ForgotPasswordButton) self.forgot_password_button.grid(row=0, column=2, padx=10, pady=10) # Deneme Hakkı ve Süre self.attempt_label = tk.Label(self, font=("Arial", 14, "bold"), bg="#F0F0F0") self.attempt_label.place(relx=0.2, rely=0.8, anchor="w") self.countdown_label = tk.Label(self, font=("Arial", 14, "bold"), bg="#F0F0F0") self.countdown_label.place(relx=0.8, rely=0.8, anchor="e") self.login_attempts = 3 self.countdown_time = 180 # 3 dakika self.update_attempt_label() # Giriş alanlarını kontrol et self.tc_var.trace_add("write", self.check_entries) # Süreyi başlat self.countdown_time_update() def update_date_time(self): current_datetime = datetime.now() date_string = current_datetime.strftime("%d.%m.%Y") time_string = current_datetime.strftime("%H:%M:%S") date_time_text = f"{date_string} / {time_string}" self.date_time_label.configure(text=date_time_text) self.after(1000, self.update_date_time) def update_attempt_label(self): self.attempt_label.configure(text=f"Kalan Deneme Hakkı: {self.login_attempts}") if self.login_attempts == 0: self.login_button.configure(state="disabled") def check_entries(self, *args): tc_value = self.tc_var.get() password_value = self.password_entry.get() if len(password_value) > 6 or len(tc_value) > 11: messagebox.showwarning("Uyarı", "TC Kimlik Numarası en fazla 11 karakter ve Şifre en fazla 6 karakter olmalıdır.") self.reset_entries() def login(self): if not self.tc_var.get() or not self.password_entry.get(): messagebox.showerror("Hata", "Lütfen TC ve şifrenizi girin.") return username = self.tc_var.get() password = self.password_entry.get() # Örnek olarak, kullanıcı adı ve şifre "admin" olarak kabul edilsin if username == "admin" and password == "admin": messagebox.showinfo("Giriş Başarılı", "Giriş işlemi başarılı.") self.reset_entries() else: self.login_attempts -= 1 self.reset_entries() self.update_attempt_label() if self.login_attempts == 0: self.after_cancel(self.countdown_time_update) self.reset_attempts() self.login_button.configure(state="disabled") self.tc_entry.configure(state="disabled") self.password_entry.configure(state="disabled") self.countdown_label.configure(text=f"Kalan Süre: {self.countdown_time} saniye") else: messagebox.showerror("Giriş Başarısız", f"Kalan deneme hakkınız: {self.login_attempts}. Lütfen TC veya şifrenizi kontrol edin.") def countdown_time_update(self): if self.countdown_time > 0: self.countdown_time -= 1 self.countdown_label.configure(text=f"Kalan Süre: {self.countdown_time} saniye") self.after(1000, self.countdown_time_update) else: self.login_button.configure(state="disabled") def reset_attempts(self): self.login_attempts = 0 self.update_attempt_label() self.login_button.configure(state="normal") self.tc_entry.configure(state="normal") self.password_entry.configure(state="normal") self.countdown_label.configure(text="") self.countdown_time = 0 def reset_entries(self): self.tc_var.set("") self.password_entry.delete(0, tk.END) def RegisterButton(self): messagebox.showinfo("Kayıt Ol", "Kayıt Ol butonuna bastınız.") def ForgotPasswordButton(self): messagebox.showinfo("Şifremi Unuttum", "Şifremi Unuttum butonuna bastınız.") if __name__ == "__main__": login_window = LoginWindow() login_window.mainloop()