Aramız limoni, kol kırıldı yen içinde kaldı misali. Bende bu yüzden şu aralar kafamı fazla Python'a sardım. Piyasada bakınıyorum R10.net 'de bu kategoriye uğrayan yok onu geçtim Türkçe kaynak fazla yok. Bende yabancı kaynaklardan araştırıyorum sürekli. Ya da youtube'dan bakıyorum.
Öğrendiklerimi size burada aktaracağım. Konulara görsel demolarda ekleyeceğim.
Bu konumda sizlere python ile üye giriş paneli yapacağız.
Tk ile sistemi yapacağız. mainloop() ile sistemi görsel olarak ekrana basacağız.
from Tkinter import *Eğer mainloop veya Tkinter kullanmazsak sistem idle üstünden okutulur.
Panelin Özellikleri Neler?
- Tanımladığımız kullanıcı var. Bu kullanıcı id-şifresi ile giriş yapabiliyoruz sisteme.
- Sisteme 3 defadan fazla yanlış bilgi girersek 5 saniye boyunca girişimizi engelliyor.
- Üye oturumundan sonraki sayfayı şekillendirebilmekteyiz.

Öncelikle temel komutlarımızı yazıp penceremize başlık verelim ve penceremizin boyutunu ayarlayalım. 290 pixele 200 pixel yaptım.
from Tkinter import *
pencere = Tk()
pencere.title(u"canusta.com.tr - Python Dersleri")
pencere.geometry("290x200+100+100")
mainloop ()Bu komutları yeni açtığımız .py dosyaya yazıp run (F5) yaparsak aşağıdaki gibi bir şey karşımıza gelecek;
Evet, başardık! Önümüze şuan görsel panel geliyor. Sıra butonları ve textbox (python adıyla entry) 'leri yerleştirmek!
Yukarıya hoşgeldiniz yazısı ekliyorum. Haricinde kullanıcı adı ve şifre girilecek yerleri ekliyorum. Aşağıdaki kodlarda entry olanlar textbox'lar. Diğerleri normal metin katmanı.
karsilama = Label(pencere) karsilama.config(text = u"Hosgeldiniz, lutfen giris yapiniz.") karsilama.pack() isimSor = Label(pencere) isimSor.config(text = u"Kullanici Adi:") isimSor.pack() isim = Entry(pencere) isim.pack() sifreSor = Label(pencere) sifreSor.config(text= u"Sifreniz:") sifreSor.pack() sifre = Entry(pencere) sifre.pack()Oluşturduğunuz değerlerin isimleri farklı olabilir (yani isimsor, karsilama vs. bunları farklılaştırabilirsiniz) Haricinde açtığınız değeri pencerenize tanımlayın hatırlıyorsanız en başta sisteme pencere diye başlık attık Label(pencere) diye değerinizi bu başlığa atayın. Birde açtığınızı değeri pack yapmazsanız sisteme baskı yapmaz.
İşte böyle sistem çıktı;

Hay Allah buton eklemeyi unutmuşuz, aşktan başım dönmüş heralde

Hemen buton kodlarını vereyim;

buton = Button(pencere) buton.config(text = u"Giris yap!", command = girisYap) buton.pack() sonuc = Label(pencere) sonuc.config(text = u"Giris yapilmadi.") sonuc.pack()Burada açtığım sonuç değerini ileride kullanacağız. Başta söz ettiğim giriş hakkı olayında falan buralar if else ile değişecek destroy ile yok olacak. Neyse devam;
Sistem şuan şöyle. Ancak unutmuşum demeyi Tkinter'ı import ettiğimiz yerin altına girisYap diye fonksiyon oluşturun yoksa sistem hata verir. Demo alabilmeniz için şuanlık iç değeri boş bırakın yani pass yazın. Tıpkı aşağıdaki gibi.

Şimdi oturum açma işlemi için ilgili komutları girelim:
Komutları def girisYap(): 'dan sonraya ekleyin. Birde o defden önce bilgi demeti girmemiz gerek. Kullanıcı id pass oradan alacak. Görselde gördüğünüz gibi.
bilgiler = ("demo", "123123")kAdi = isim.get()
parola = sifre.get()
print kAdi, " - ", parola
print "Kontrol ediliyor ..."
if kAdi == bilgiler[0] and parola == bilgiler[1]:
print "Bilgiler dogru!"
sonuc.config(text = u"Oturum acma islemi basarili.")
else:
print "Bilgiler yanlis!"Hem idle'da kontrol ediyor. Eğer bilgiler eşleşiyorsa oturum açıyor.
Şimdi son olarak 3 adet deneme hakkı verip 3 hakkı doldurduktan sonra 5 saniye girişe yasak getireceğiz.
Bunun için neler yapacağız?
Linux zamanını belgeye import edeceğiz. Vakte +5 vereceğiz.
Denemehakkı diye değer atayıp 3 diyeceğiz. Zaman diye değer atayıp 0 'a eşitleyeceğiz.
Tkinter altına şunu ekleyin:
import timeBilgiler demeti altına şunları ekleyin:
denemeHakki = 3 zaman = 0Ardına def girişyap ta global denemehakkı ve zaman değerlerini atayalım. (direk def girisYap(): 'tan sonra satır atıp ekleyin)
global denemeHakki, zamanŞimdi deneme hakkı ve zamanı tanımlayalım. (Yukarıdaki kodun direk altına ekleyebilirsiniz.)
if denemeHakki <= 0:
if time.time()-zaman >= 5:
denemeHakki = 3
else:
sonuc.config(text = u"Lutfen 5 saniye bekleyiniz.")
return FalseBir önce ki giriş ekranı formunu şöyle revize edelim: kAdi = isim.get()
parola = sifre.get()
print kAdi, " - ", parola
print "Kontrol ediliyor ..."
if kAdi == bilgiler[0] and parola == bilgiler[1]:
print "Bilgiler dogru!"
sonuc.config(text = u"Oturum acma islemi basarili.")
ekraniTemizle()
else:
print "Bilgiler yanlis!"
denemeHakki -= 1
if denemeHakki == 0:
zaman = time.time()
sonuc.config(text = u"Bilgiler yanlis. Kalan deneme hakki: %d" %denemeHakki)Giriş işlemi başarılı olursa giriş yaptıktan sonra tüm ekranı temizleyelim.def ekraniTemizle():
karsilama.config(text = u"Hosgeldin, Demo!")
isimSor.destroy()
isim.destroy()
sifreSor.destroy()
sifre.destroy()
buton.destroy()Oturum açıldıktan sonra bakın böyle oluyor:
buton.destroy() altına başka def ekleyerek iç dizaynınızı yapabilirsiniz. Yeni fonksiyonlar katabilirsiniz.
Tüm kaynak kodları:
from Tkinter import *
import time
bilgiler = ("demo", "123456")
denemeHakki = 3
zaman = 0
def girisYap():
global denemeHakki, zaman
if denemeHakki <= 0:
if time.time()-zaman >= 5:
denemeHakki = 3
else:
sonuc.config(text = u"Lutfen 5 saniye bekleyiniz.")
return False
kAdi = isim.get()
parola = sifre.get()
print kAdi, " - ", parola
print "Kontrol ediliyor ..."
if kAdi == bilgiler[0] and parola == bilgiler[1]:
print "Bilgiler dogru!"
sonuc.config(text = u"Oturum acma islemi basarili.")
ekraniTemizle()
else:
print "Bilgiler yanlis!"
denemeHakki -= 1
if denemeHakki == 0:
zaman = time.time()
sonuc.config(text = u"Bilgiler yanlis. Kalan deneme hakki: %d" %denemeHakki)
def ekraniTemizle():
karsilama.config(text = u"Hosgeldin, Demo!")
isimSor.destroy()
isim.destroy()
sifreSor.destroy()
sifre.destroy()
buton.destroy()
pencere = Tk()
pencere.title(u"canusta.com.tr - Python Dersleri")
pencere.geometry("290x200+100+100")
karsilama = Label(pencere)
karsilama.config(text = u"Hosgeldiniz, lutfen giris yapiniz.")
karsilama.pack()
isimSor = Label(pencere)
isimSor.config(text = u"Kullanici Adi:")
isimSor.pack()
isim = Entry(pencere)
isim.pack()
sifreSor = Label(pencere)
sifreSor.config(text= u"Sifreniz:")
sifreSor.pack()
sifre = Entry(pencere)
sifre.pack()
buton = Button(pencere)
buton.config(text = u"Giris yap!", command = girisYap)
buton.pack()
sonuc = Label(pencere)
sonuc.config(text = u"Giris yapilmadi.")
sonuc.pack()
mainloop ()