Ders-5.1: Tkinter Entry Bilgi Alma
Tkinter Entry Bilgi Alma
Tkinter Entry Bilgi Alma – Temel python derslerinde kullanıcıdan INPUT fonksiyonu ile bilgi alınabileceğini görmüştük. Yaptığımız programların kullanıcı ile etkileşime girmesi son derece önemlidir. Tkinter GUI programlama da Entry araçları ile bu etkileşime girerek kullanıcıdan bilgi isteyebiliriz.
Entry.get İle Bilgi Alma:
import tkinter as tk
pencere=tk.Tk()
pencere.title("Buton İşlemleri")
pencere.geometry("500x500")
def butonBas():
#entry den bilgileri alma
adsoyad=ent1.get()
print(adsoyad)
e1=tk.Label(text="Adı Soyadı",font="Arial 12 bold")
e1.pack()
ent1=tk.Entry(width=30)
ent1.pack()
b1=tk.Button(text="GİRİŞ",bg="black",fg="white",font="Arial 20 bold",command=butonBas)
b1.pack()
pencere.mainloop()
Yukarıdaki kodları incelediğimizde; Bir etiket, bir entry ve bir buton aracının eklendiğinin görüyoruz.
Butona basıldığında command=butonBas parametresine verdiğimiz fonksiyona bizi program yönlendirecektir. Şimdi yukarıdaki butonBas fonksiyonunu inceleyelim.
def butonBas():
#entry den bilgileri alma
adsoyad=ent1.get()
print(adsoyad)
ent1.get( ) ile kullanıcının entry ye girdiği değeri alırız ve adsoyad değişkenine atarız. Artık elimizde adsoyad isminde bir değişken var ve biz bunu istediğimiz yerde kullanabiliriz. Bu fonksiyonda bu değişkeni terminalde yazdırdım. Dikkat!!! pencerede yazdırmadım.
Şimdi ise entry den aldığımız bu değeri pencere üzerinde bir etikete yazdıralım.
import tkinter as tk
pencere=tk.Tk()
pencere.title("Buton İşlemleri")
pencere.geometry("500x500")
def butonBas():
#entry den bilgileri alma
adsoyad=ent1.get()
e2.config(text=adsoyad)
e1=tk.Label(text="Adı Soyadı",font="Arial 12 bold")
e1.pack()
ent1=tk.Entry(width=30)
ent1.pack()
b1=tk.Button(text="GİRİŞ",bg="black",fg="white",font="Arial 20 bold",command=butonBas)
b1.pack()
e2=tk.Label(text="--------",font="Arial 12 bold")
e2.pack()
pencere.mainloop()
Yukarıdaki kodlara ek olarak e2 isimli bir label oluşturdum. Fonksiyon içerisinde ise e2.config (text=adsoyad) satırını yazarak e2 etiketinin içerisindeki text parametresinin değerini değiştirdim. Kullanıcı butona basıca penceredeki e2 etiketinde ad soyad bilgisi yazacak.
Görüldüğü gibi entry ye yazdığımız bilgiyi e2 etiketine aktardık. Mutlaka dikkat etmişsinizdir. Butona bastıktan sonra entry nin içeriği silinmedi. Diğer başlığımızda ise entry deki bilgiyi silmeyi işleyeceğiz.
Entry deki Bilgiyi Silme:
import tkinter as tk
pencere=tk.Tk()
pencere.title("Buton İşlemleri")
pencere.geometry("500x500")
def butonBas():
#entry den bilgileri alma
adsoyad=ent1.get()
no= ent2.get()
sinif=ent3.get()
print(adsoyad,no,sinif)
#etiketlere e4,e5,e6 etiketlerine yazdırma...
e4.config(text=adsoyad)
e5.config(text=no)
e6.config(text=sinif)
#entry içerik silme
ent1.delete(0,tk.END)
ent2.delete(0,tk.END)
ent3.delete(0,tk.END)
e1=tk.Label(text="Adı Soyadı",font="Arial 12 bold")
e1.pack()
ent1=tk.Entry(width=30)
ent1.pack()
e2=tk.Label(text="Numara",font="Arial 12 bold")
e2.pack()
ent2=tk.Entry(width=30)
ent2.pack()
e3=tk.Label(text="Sınıf",font="Arial 12 bold")
e3.pack()
ent3=tk.Entry(width=30)
ent3.pack()
b1=tk.Button(text="GİRİŞ",bg="black",fg="white",font="Arial 20 bold",command=butonBas)
b1.pack()
e4=tk.Label(text="----",font="Arial 12 bold",fg="red")
e4.pack()
e5=tk.Label(text="----",font="Arial 12 bold",fg="purple")
e5.pack()
e6=tk.Label(text="----",font="Arial 12 bold",fg="blue")
e6.pack()
pencere.mainloop()
Programa eklemeler yaparak aşağıdaki görüntüyü elde ettim.
Burada fonksiyonun içerisine bakacak olursak;
def butonBas():
#entry den bilgileri alma
adsoyad=ent1.get()
no= ent2.get()
sinif=ent3.get()
print(adsoyad,no,sinif)
#etiketlere e4,e5,e6 etiketlerine yazdırma...
e4.config(text=adsoyad)
e5.config(text=no)
e6.config(text=sinif)
#entry içerik silme
ent1.delete(0,tk.END)
ent2.delete(0,tk.END)
ent3.delete(0,tk.END)
Butona basılınca öncelikle 3 adet Entry den bilgiler alınıp adsoyad, no ve sinif değişkenlerine aktarılıyor. Daha sonra e4,e5 ve e6 etiketlerine bu bilgiler yazdırılıyor. En sonunda ise bu başlığımız ile alakalı entry lerin içeriği temizleniyor. ent1.delete(0,tk.END) satırı ile ent1 değişkenine tanımlı olan Entry’ nin içeriği temizlenmektedir. Parantez içerisine 2 parametre yazmamız gerekmektedir. Bu parametreler başlangıç değeri ve bitiş değerleri. tk.END fonksiyonunu Entry’ nin içeriğini sonuna kadar silmek için kullanıyoruz.
Teşekkürler çok faydalı oldu…
Peki ben ent1′ i başka bir def’in içinde tanımladım daha sonra farklı bir def’in içinde ent1.get() yaptığım zaman not defined hatası alıyorum.
Yani ben başka bir def’in altındaki Entry’i başka bir def’in altında .get() yapabilirmiyim veya nasıl yaparım?