Facebook
From Abdullah, 2 Months ago, written in Python.
Embed
Download Paste or View Raw
Hits: 189
  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))  # Bulanıklık derecesi (radius) değeri ayarlanabilir
  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.tc_label = tk.Label(self, text="TC Kimlik Numarası:", font=("Arial", 14, "bold"), bg="#F0F0F0")
  28.         self.tc_label.place(relx=0.2, rely=0.4, anchor="w")
  29.         self.tc_var = tk.StringVar()  # StringVar oluştur
  30.         self.tc_entry = tk.Entry(self, font=("Arial", 14), bd=2, relief="groove", textvariable=self.tc_var)
  31.         self.tc_entry.place(relx=0.2, rely=0.45, relwidth=0.6, relheight=0.07)
  32.  
  33.         self.password_label = tk.Label(self, text="Şifre:", font=("Arial", 14, "bold"), bg="#F0F0F0")
  34.         self.password_label.place(relx=0.2, rely=0.55, anchor="w")
  35.         self.password_entry = tk.Entry(self, font=("Arial", 14), bd=2, relief="groove", show="*")
  36.         self.password_entry.place(relx=0.2, rely=0.6, relwidth=0.6, relheight=0.07)
  37.  
  38.         # Butonlar
  39.         self.login_button = tk.Button(self, text="Giriş Yap", font=("Arial", 14), bd=2, relief="raised", bg="#4CAF50", fg="white", command=self.login, state="normal")
  40.         self.login_button.place(relx=0.2, rely=0.7, relwidth=0.2, relheight=0.07)
  41.  
  42.         self.register_button = tk.Button(self, text="Kayıt Ol", font=("Arial", 14), bd=2, relief="raised", bg="#2196F3", fg="white")
  43.         self.register_button.place(relx=0.4, rely=0.7, relwidth=0.2, relheight=0.07)
  44.  
  45.         self.forgot_password_button = tk.Button(self, text="Şifremi Unuttum", font=("Arial", 14), bd=2, relief="raised", bg="#F44336", fg="white")
  46.         self.forgot_password_button.place(relx=0.6, rely=0.7, relwidth=0.2, relheight=0.07)
  47.  
  48.         # Deneme Hakkı ve Süre
  49.         self.attempt_label = tk.Label(self, font=("Arial", 14, "bold"), bg="#F0F0F0")
  50.         self.attempt_label.place(relx=0.2, rely=0.8, anchor="w")
  51.         self.countdown_label = tk.Label(self, font=("Arial", 14, "bold"), bg="#F0F0F0")
  52.         self.countdown_label.place(relx=0.8, rely=0.8, anchor="e")
  53.  
  54.         self.login_attempts = 3
  55.         self.countdown_time = 180  # 3 dakika
  56.         self.update_attempt_label()
  57.  
  58.         # Giriş alanlarını kontrol et
  59.         self.tc_var.trace_add("write", self.check_entries)
  60.  
  61.         # Süreyi başlat
  62.         self.countdown_time_update()
  63.  
  64.     def update_date_time(self):
  65.         current_datetime = datetime.now()
  66.         date_string = current_datetime.strftime("%d.%m.%Y")
  67.         time_string = current_datetime.strftime("%H:%M:%S")
  68.         date_time_text = f"{date_string} / {time_string}"
  69.         self.date_time_label.configure(text=date_time_text)
  70.         self.after(1000, self.update_date_time)  # Her saniye güncelle
  71.  
  72.     def update_attempt_label(self):
  73.         self.attempt_label.configure(text=f"Kalan Deneme Hakkı: {self.login_attempts}")
  74.         if self.login_attempts == 0:
  75.             self.login_button.configure(state="disabled")
  76.  
  77.     def check_entries(self, *args):
  78.         tc_value = self.tc_var.get()
  79.         password_value = self.password_entry.get()
  80.         if len(password_value) > 6 or len(tc_value) > 11:
  81.             messagebox.showwarning("Uyarı", "TC Kimlik Numarası en fazla 11 karakter ve Şifre en fazla 6 karakter olmalıdır.")
  82.             self.reset_entries()
  83.  
  84.     def login(self):
  85.         if not self.tc_var.get() or not self.password_entry.get():
  86.             messagebox.showerror("Hata", "Lütfen TC ve şifrenizi girin.")
  87.             return
  88.  
  89.         username = self.tc_var.get()
  90.         password = self.password_entry.get()
  91.  
  92.         # Örnek olarak, kullanıcı adı ve şifre "admin" olarak kabul edilsin
  93.         if username == "admin" and password == "admin":
  94.             messagebox.showinfo("Giriş Başarılı", "Giriş işlemi başarılı.")
  95.             self.reset_entries()
  96.         else:
  97.             self.login_attempts -= 1
  98.             self.reset_entries()
  99.             self.update_attempt_label()
  100.             if self.login_attempts == 0:
  101.                 self.after_cancel(self.countdown_time_update)
  102.                 self.reset_attempts()
  103.                 self.login_button.configure(state="disabled")
  104.                 self.tc_entry.configure(state="disabled")
  105.                 self.password_entry.configure(state="disabled")
  106.                 self.countdown_label.configure(text=f"Kalan Süre: {self.countdown_time} saniye")
  107.             else:
  108.                 messagebox.showerror("Giriş Başarısız", f"Kalan deneme hakkınız: {self.login_attempts}. Lütfen TC veya şifrenizi kontrol edin.")
  109.  
  110.     def countdown_time_update(self):
  111.         if self.countdown_time > 0:
  112.             self.countdown_time -= 1
  113.             self.countdown_label.configure(text=f"Kalan Süre: {self.countdown_time} saniye")
  114.             self.after(1000, self.countdown_time_update)
  115.         else:
  116.             self.login_button.configure(state="disabled")
  117.  
  118.     def reset_attempts(self):
  119.         self.login_attempts = 0
  120.         self.update_attempt_label()
  121.         self.login_button.configure(state="normal")
  122.         self.tc_entry.configure(state="normal")
  123.         self.password_entry.configure(state="normal")
  124.         self.countdown_label.configure(text="")
  125.         self.countdown_time = 0
  126.  
  127.     def reset_entries(self):
  128.         self.tc_var.set("")
  129.         self.password_entry.delete(0, tk.END)
  130.  
  131. if __name__ == "__main__":
  132.     login_window = LoginWindow()
  133.     login_window.mainloop()