Ders-13.1: Tkinter Listbox Çoklu Seçim ve Taşıma
Tkinter Listbox Çoklu Seçim ve Taşıma
Bu dersimizde Listbox aracından çoklu seçim yaparak, seçtiğimiz satırları başka bir listbox aracına taşıyacağız. Öncelikle ekran görüntüsünü paylaşıyorum.
Bu örnekte turuncu reknteki listbox aracındaki elemanları çoklu seçim ile seçeceğiz (ctrl, shift yada fareyi kullanabilirsiniz). Daha sonra butona tıkladığımızda seçtiğimiz elemanlar sağ taraftaki gri renkli listbax aracına taşınacaktır. Gelin şimdi de kodlarımıza bir göz atalım.
import tkinter as tk
meyveler=["elma","armut","çilek","üzüm","karpuz","kavun"]
pencere=tk.Tk()
pencere.title("List Box Aracı")
pencere.geometry("600x500")
def ekle():
eleman=list1.curselection()
for i in eleman:
deger=list1.get(i)
list2.insert(tk.END,deger)
list1=tk.Listbox(bg="orange", fg="Purple",relief="raised",font="Arial 14",selectmode="extended")
list1.place(x=10,y=10,width=200)
btn1=tk.Button(text=">>>>",font="Aril 14 bold",width=5,height=2,command=ekle)
btn1.place(x=230,y= 60)
list2=tk.Listbox(bg="grey", fg="Purple",relief="raised",font="Arial 14")
list2.place(x=310,y=10,width=200)
for i in meyveler:
list1.insert(tk.END,i)
l1=tk.Label(text="ÖNEMLİ : Sağ tarafa geçirmek istediğiniz elemanları seçiniz.\n Fare,CTRL,Shift tuşları ile çoklu seçim yapabilirsiniz. ")
l1.place(x=20,y=300)
pencere.mainloop()
Yukarıdaki kodları incelediğimizde list1, list2 isimli iki adet listbox aracı göreceksiniz. Sol taraftaki turuncu olan list1 isimli, sağ taraftaki gri renkli olan araç ise list2 isimli listbox araçlarıdır.
Ortalarında bir buton var. Bu butona tıklayınca bizi ekle fonksiyonuna götürmekte ve bütün iş bu fonksiyon içerisinde yapılmaktadır. Fonksiyona geçmeden önce çoklu seçimin nasıl yapıldığında bahsedelim.
Çoklu seçim için selectmode=”extended” parametresinden faydalanıyoruz. Bu parametre ve diğer parametreler ile ilgili bilgiyi bir önceki dersimizde bulabilirsiniz. Tkinter Listbox Kullanımı dersi için tıklayın.
Şimdi gelelim butona tıkladığımızda yapılacak işlemler. Öncelikle ekle fonksiyonunun içerisindeki kodları inceleyelim.
def ekle():
eleman=list1.curselection()
for i in eleman:
deger=list1.get(i)
list2.insert(tk.END,deger)
ilk satırdaki eleman değişkenine 1.listbox aracındaki seçili olan elemanların indexleri tuple şeklinde kaydolur. Örneğin (0,3,5). Bu sayede hangi elemanları seçili olduğu indexleri ile beraber elimize geçmiş olur. 2.satırda ise eleman tuple içerisinde iterasyon özelliğinden faydalanarak bir döngü açıyoruz. i değişkeni her seferinde bu tuple içerisindeki index numaralarını taşıyacaktır. Döngü içerisine list1.get(i) diyerek i. indexin değerini alırız ve değer değişkenine aktarırız. Hemen ardından değer değişkenindeki veriyi list2.insert komutu ile listbox 2 aracına ekleriz.