Facebook
From Apoo, 2 Months ago, written in Python.
Embed
Download Paste or View Raw
Hits: 212
  1. import tkinter as tk
  2. from tkinter import messagebox
  3. from PIL import Image, ImageTk, ImageFilter
  4. from datetime import datetime
  5.  
  6. class LoginWindow(tk.Tk):
  7.     def __init__(self):
  8.         super().__init__()
  9.         self.title("ATM Otomasyonu")
  10.         self.geometry("1000x1200")
  11.         self.configure(bg="#F0F0F0")
  12.  
  13.         # Arka plan resmi
  14.         bg_image = Image.open("C:/Users/abdan/OneDrive/Masaüstü/Atm/logo.png")
  15.         bg_image = bg_image.filter(ImageFilter.GaussianBlur(radius=10))
  16.         bg_image = bg_image.resize((self.winfo_screenwidth(), self.winfo_screenheight()), Image.ANTIALIAS)
  17.         self.bg_photo = ImageTk.PhotoImage(bg_image)
  18.         bg_label = tk.Label(self, image=self.bg_photo)
  19.         bg_label.place(x=0, y=0, relwidth=1, relheight=1)
  20.  
  21.         # Tarih ve Saat
  22.         self.date_time_label = tk.Label(self, font=("Arial", 16, "bold"), bg="#F0F0F0")
  23.         self.date_time_label.place(relx=0.5, rely=0.05, anchor="center")
  24.         self.update_date_time()
  25.  
  26.         # Giriş Alanları
  27.         self.entry_frame = tk.Frame(self, bg="#F0F0F0")
  28.         self.entry_frame.place(relx=0.5, rely=0.4, anchor="center")
  29.  
  30.         self.tc_label = tk.Label(self.entry_frame, text="TC Kimlik Numarası:", font=("Arial", 14, "bold"), bg="#F0F0F0")
  31.         self.tc_label.grid(row=0, column=0, padx=10, pady=10, sticky="w")
  32.         self.tc_var = tk.StringVar()
  33.         self.tc_entry = tk.Entry(self.entry_frame, font=("Arial", 14), bd=2, relief="groove", textvariable=self.tc_var)
  34.         self.tc_entry.grid(row=1, column=0, padx=10, pady=10)
  35.  
  36.         self.password_label = tk.Label(self.entry_frame, text="Şifre:", font=("Arial", 14, "bold"), bg="#F0F0F0")
  37.         self.password_label.grid(row=2, column=0, padx=10, pady=10, sticky="w")
  38.         self.password_entry = tk.Entry(self.entry_frame, font=("Arial", 14), bd=2, relief="groove", show="*")
  39.         self.password_entry.grid(row=3, column=0, padx=10, pady=10)
  40.  
  41.         # Butonlar
  42.         self.button_frame = tk.Frame(self, bg="#F0F0F0")
  43.         self.button_frame.place(relx=0.5, rely=0.7, anchor="center")
  44.  
  45.         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")
  46.         self.login_button.grid(row=0, column=0, padx=10, pady=10)
  47.  
  48.         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)
  49.         self.register_button.grid(row=0, column=1, padx=10, pady=10)
  50.  
  51.         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)
  52.         self.forgot_password_button.grid(row=0, column=2, padx=10, pady=10)
  53.  
  54.         # Deneme Hakkı ve Süre
  55.         self.attempt_label = tk.Label(self, font=("Arial", 14, "bold"), bg="#F0F0F0")
  56.         self.attempt_label.place(relx=0.2, rely=0.8, anchor="w")
  57.         self.countdown_label = tk.Label(self, font=("Arial", 14, "bold"), bg="#F0F0F0")
  58.         self.countdown_label.place(relx=0.8, rely=0.8, anchor="e")
  59.  
  60.         self.login_attempts = 3
  61.         self.countdown_time = 180  # 3 dakika
  62.         self.update_attempt_label()
  63.  
  64.         # Giriş alanlarını kontrol et
  65.         self.tc_var.trace_add("write", self.check_entries)
  66.  
  67.         # Süreyi başlat
  68.         self.countdown_time_update()
  69.  
  70.     def update_date_time(self):
  71.         current_datetime = datetime.now()
  72.         date_string = current_datetime.strftime("%d.%m.%Y")
  73.         time_string = current_datetime.strftime("%H:%M:%S")
  74.         date_time_text = f"{date_string} / {time_string}"
  75.         self.date_time_label.configure(text=date_time_text)
  76.         self.after(1000, self.update_date_time)
  77.  
  78.     def update_attempt_label(self):
  79.         self.attempt_label.configure(text=f"Kalan Deneme Hakkı: {self.login_attempts}")
  80.         if self.login_attempts == 0:
  81.             self.login_button.configure(state="disabled")
  82.  
  83.     def check_entries(self, *args):
  84.         tc_value = self.tc_var.get()
  85.         password_value = self.password_entry.get()
  86.         if len(password_value) > 6 or len(tc_value) > 11:
  87.             messagebox.showwarning("Uyarı", "TC Kimlik Numarası en fazla 11 karakter ve Şifre en fazla 6 karakter olmalıdır.")
  88.             self.reset_entries()
  89.  
  90.     def login(self):
  91.         if not self.tc_var.get() or not self.password_entry.get():
  92.             messagebox.showerror("Hata", "Lütfen TC ve şifrenizi girin.")
  93.             return
  94.  
  95.         username = self.tc_var.get()
  96.         password = self.password_entry.get()
  97.  
  98.         # Örnek olarak, kullanıcı adı ve şifre "admin" olarak kabul edilsin
  99.         if username == "admin" and password == "admin":
  100.             messagebox.showinfo("Giriş Başarılı", "Giriş işlemi başarılı.")
  101.             self.reset_entries()
  102.         else:
  103.             self.login_attempts -= 1
  104.             self.reset_entries()
  105.             self.update_attempt_label()
  106.             if self.login_attempts == 0:
  107.                 self.after_cancel(self.countdown_time_update)
  108.                 self.reset_attempts()
  109.                 self.login_button.configure(state="disabled")
  110.                 self.tc_entry.configure(state="disabled")
  111.                 self.password_entry.configure(state="disabled")
  112.                 self.countdown_label.configure(text=f"Kalan Süre: {self.countdown_time} saniye")
  113.             else:
  114.                 messagebox.showerror("Giriş Başarısız", f"Kalan deneme hakkınız: {self.login_attempts}. Lütfen TC veya şifrenizi kontrol edin.")
  115.  
  116.     def countdown_time_update(self):
  117.         if self.countdown_time > 0:
  118.             self.countdown_time -= 1
  119.             self.countdown_label.configure(text=f"Kalan Süre: {self.countdown_time} saniye")
  120.             self.after(1000, self.countdown_time_update)
  121.         else:
  122.             self.login_button.configure(state="disabled")
  123.  
  124.     def reset_attempts(self):
  125.         self.login_attempts = 0
  126.         self.update_attempt_label()
  127.         self.login_button.configure(state="normal")
  128.         self.tc_entry.configure(state="normal")
  129.         self.password_entry.configure(state="normal")
  130.         self.countdown_label.configure(text="")
  131.         self.countdown_time = 0
  132.  
  133.     def reset_entries(self):
  134.         self.tc_var.set("")
  135.         self.password_entry.delete(0, tk.END)
  136.  
  137.     def RegisterButton(self):
  138.         messagebox.showinfo("Kayıt Ol", "Kayıt Ol butonuna bastınız.")
  139.  
  140.     def ForgotPasswordButton(self):
  141.         messagebox.showinfo("Şifremi Unuttum", "Şifremi Unuttum butonuna bastınız.")
  142.  
  143. if __name__ == "__main__":
  144.     login_window = LoginWindow()
  145.     login_window.mainloop()