Merih Forum

Tam Versiyon: Entry() Aracına Veri Girmek
Şu anda tam olmayan bir versiyonun içeriğine bakıyorsunuz. Tam versiyon'a bakınız.
get() metodunu anlatırken verdiğimiz son kodlarda, toplama işleminin sonucunu komut satırına yazdırdık. Bildiğiniz gibi, eğer isteseydik bu işlemin sonucunu bir Label() aracına da yazdırabilirdik:
from tkinter import *

pencere = Tk()

def topla():
   veri1 = entry1.get()
   veri2 = entry2.get()
   sayı1 = int(veri1)
   sayı2 = int(veri2)

   sonuç = sayı1 + sayı2
   sonuç_etk["text"] = "sonuç: " + str(sonuç)

entry1 = Entry()
entry1.pack(padx=10, pady=10)

entry2 = Entry()
entry2.pack(padx=10, pady=10)

sonuç_etk = Label(text="sonuç: ")
sonuç_etk.pack(padx=10, anchor="w")

düğme = Button(text="topla", command=topla)
düğme.pack(padx=10, pady=10)

mainloop()
Burada kullanıcı “topla” adlı düğmeye bastığında, kutulara girilen sayılar alınacak, daha sonra bunlar sayıya dönüştürülecek ve bu iki sayının toplamı etiket üzerinde gösterilecek.
Peki ama biz sonucu bir Label() üzerinde değil de, başka bir Entry() aracı üzerinde göstermek istersek ne olacak?
Bunu yapabilmek için, Entry() aracına nasıl veri yerleştirileceğini bilmemiz lazım. İşte bu iş için insert() adlı başka bir metottan yararlanacağız. Tkinter’de nasıl get() metodunu kullanarak Entry() aracından veri alıyorsak, insert()metodunu kullanarak da Entry() aracına veri yerleştirebiliriz.
Bu metodu yukarıdaki örneğe uygulayalım:
from tkinter import *

pencere = Tk()

def topla():
   veri1 = entry1.get()
   veri2 = entry2.get()
   sayı1 = int(veri1)
   sayı2 = int(veri2)

   sonuç = sayı1 + sayı2
   sonuç_entry.insert(0, sonuç)

entry1 = Entry()
entry1.pack(padx=10, pady=4)

entry2 = Entry()
entry2.pack(padx=10)

sonuç_entry = Entry()
sonuç_entry.pack(padx=10, pady=10, anchor="w")

düğme = Button(text="topla", command=topla)
düğme.pack(padx=10, pady=10)

mainloop()
Burada aritmetik işlemin sonucunu Entry() aracına yerleştirmemizi sağlayan satır şu:
sonuç_entry.insert(0, sonuç)
Gördüğünüz gibi, insert() metodu iki parametre alıyor. Bu parametrelerden ilki, verinin Entry() aracında hangi konuma yerleştirileceğini gösteriyor. İkincisi ise yerleştirilecek verinin ne olduğunu... Yukarıdaki kodlara göre biz sonuç değişkeninin değerini 0. konuma yerleştiriyoruz. Gelin isterseniz şu “konum” meselesini biraz açıklamaya çalışalım.
Şimdi şu örneği dikkatlice inceleyin:
from tkinter import *

pencere = Tk()

def veri_gir():
   entry.insert(1, "bbb")

entry = Entry()
entry.insert(0, "aaaaaaaaa")
entry.pack(padx=10, pady=10)

button = Button(text="veri gir", command=veri_gir)
button.pack(padx=10, pady=10)

mainloop()
Bu programı ilk çalıştırdığınızda pencere üzerindeki kutucukta “aaaaaaaaa” harflerini göreceksiniz. Bunu sağlayan kod şu:
entry.insert(0, "aaaaaaaaa")
Burada Entry() aracının 0. konumuna, yani kutunun sol baş tarafına “aaaaaaaaa” harflerini yerleştiriyoruz.
Şimdi pencere üzerindeki düğmeye basın. Düğmeye bastıktan sonra kutu içindeki değerin şu şekle büründüğünü göreceksiniz:
abbbaaaaaaaa
Gördüğünüz gibi, “bbb” harfleri ilk “a” harfinin sağına yerleşti. Bunu sağlayan şey ise şu kod:
entry.insert(1, "bbb")
Burada ise, bir önceki kodun aksine, verileri 0. konuma değil, 1. konuma yerleştiriyoruz. Durumu daha ne anlayabilmek için yukarıdaki entry.insert(1, "bbb") satırını şöyle değiştirin:
entry.insert(4, "bbb")
Bu defa “bbb” harfleri 4. “a” harfinin sağına yerleşti. Sanırım bu örnekler “konum” derken ne kastettiğimizi net bir şekilde gösteriyor. Gördüğünüz gibi, insert() metodunun ilk parametresi, ikinci parametrede belirtilen verinin, kutuda hangi sıraya yerleştirileceğini gösteriyor. Eğer kutu boşsa, ilk parametre ne olursa olsun, veriler ilk sıraya yerleşir. Eğer kutuda önceden bir veri varsa, yeni veriler bu ilk parametrenin gösterdiği değere göre kutu içine yerleşir. Bu arada Python’ın konum belirlerken saymaya 0’dan başladığına dikkat edin.
Tkinter’de Entry() araçları üzerinde çalışırken konum belirlemek için farklı yöntemlerden yararlanabilirsiniz:
1. Yukarıda gösterdiğimiz şekilde, sıra numarası vererek konum belirtebilirsiniz. Örneğin:
entry.insert(0, "veri")
entry.insert(5, "veri")
2. Konum bildiren özel bazı ifadelerden yararlanabilirsiniz. Örneğin “anchor” adlı özel bir ifade, fare ile seçilen alanın sol baş tarafına işaret eder. Bunu bir örnek üzerinde gösterelim:
from tkinter import *

pencere = Tk()

def veri_gir():
   entry.insert("anchor", "bbb")

entry = Entry()
entry.insert(0, "aaaaaaaaa")
entry.pack(padx=10, pady=10)

button = Button(text="veri gir", command=veri_gir)
button.pack(padx=10, pady=10)

mainloop()
Bu programı çalıştırdıktan sonra “aaaaaaaaa” verisinin bir kısmını fare ile seçtikten sonra “veri gir” düğmesine basın ve verilerin seçim alanının neresine yerleştirildiğini inceleyin.
3. “insert” adlı başka bir özel ifade, fare imlecinin olduğu yere işaret eder. Örneğin:
from tkinter import *

pencere = Tk()

def veri_gir():
   entry.insert("insert", "bbb")

entry = Entry()
entry.insert(0, "aaaaaaaaa")
entry.pack(padx=10, pady=10)

button = Button(text="veri gir", command=veri_gir)
button.pack(padx=10, pady=10)

mainloop()
Bu programı çalıştırdıktan sonra fare imleci ile “aaaaaaaaa” verisinin herhangi bir yerine tıklayın ve ardından “veri gir” düğmesine basın. “bbb” verisinin, fare imlecinin bulunduğu noktaya yerleştiğini göreceksiniz.
4. “end” adlı bir bir özel ifade, kutu içindeki verinin son karakterinin bulunduğu konuma işaret eder. Örneğin:
from tkinter import *

pencere = Tk()

def veri_gir():
   entry.insert("insert", "bbb")

entry = Entry()
entry.insert(0, "aaaaaaaaa")
entry.pack(padx=10, pady=10)

button = Button(text="veri gir", command=veri_gir)
button.pack(padx=10, pady=10)

mainloop()
Programı çalıştırıp “veri gir” düğmesine bastığınızda “bbb” verisinin hep en sona yerleştiğini göreceksiniz.
5. “sel.first” adlı özel bir ifade, kutu içinde fare ile seçtiğiniz alanın ilk karakterine işaret eder. Örneğin:
from tkinter import *

pencere = Tk()

def veri_gir():
   entry.insert("sel.first", "bbb")

entry = Entry()
entry.insert(0, "aaaaaaaaa")
entry.pack(padx=10, pady=10)

button = Button(text="veri gir", command=veri_gir)
button.pack(padx=10, pady=10)

mainloop()
6. “sel.last” adlı özel bir ifade, kutu içinde fare ile seçtiğiniz alanın son karakterine işaret eder. Örneğin:
from tkinter import *

pencere = Tk()

def veri_gir():
   entry.insert("sel.last", "bbb")

entry = Entry()
entry.insert(0, "aaaaaaaaa")
entry.pack(padx=10, pady=10)

button = Button(text="veri gir", command=veri_gir)
button.pack(padx=10, pady=10)

mainloop()
Bu arada, “sel.first” ve “sel.last” ifadelerinin fare ile seçtiğiniz alanı silmediğine dikkat edin. Bu ifadelerin nasıl çalıştığını anlamak için kendi kendinize bol bol örnek yapmalısınız.


[Resim: 1L3bOG.png]
butona basmadan entry'e veri girildiğinde otomatik olarak toplama yapabilir miyiz. entry'de değişiklik oldukça toplama işlemini yaptırabilir miyiz?
yaparız bi ara bakayım
yardımcı olursanız çok memnun olurum Smile
bence o da bilmiyor