Arkadaşlar merhaba, tkinter da veri girişi alacağım Entrybox’u daha uzun bilgiler girebilmek için büyütmek istiyorum. Width komutu çalışıyor fakat height çalışmıyor. İnternetten araştırdığım kadarıyla entrybox a scrollbar ekleniyormuş araştırdım fakat bir şey anlayamadım. Entrybox’u aşağı doğru nasıl büyütebilirim veya scrollbar ı nasıl kullanabilirim yardımcı olur musunuz?
Örnek olarak yaptığım programdan entry kesiti:
telno = tkinter.Entry(veripenceresi, font="Arial 13" ,bg="#e6c619", width=18)
telno.place(x=10, y=250)
1 Beğeni
Merhaba, tk.Entry
tek satırlık veri alımı için tasarlanmış; height
diye bir parametre kabul etmemesinin sebebi o olsa gerek. Size lazım olan tk.Text
olabilir mi?
import tkinter as tk
root = tk.Tk()
tel_no = tk.Text(root, width=16, height=3)
tel_no.place(x=5, y=10)
root.mainloop()
Dokümantasyonda da belirtildiği üzere width
parametresinin birimi karakter iken, height
parametresininki satır oluyor. Yani yukarıda 16 karakter genişliğinde ve 3 satır uzunluğunda bir tk.Text
objesi oluşturuyoruz.
merhaba text ile girdi işlemi yapabilir miyim, yani entryle aynı görevi mi görüyor?
yapmak istediğim o kısma veri yazıp sqlite veritabanına girilen veriyi yazdırmak
Evet, tk.Entry
tek satıra yönelik, bu çoklu satıra da izin veriyor. get
ile verisine ulaşırken de hangi satır ve karakterden itibaren veriyi almak istediğinizi ve nereye kadar almak istediğinizi belirtiyorsunuz:
import tkinter as tk
def yazdir():
# baştan sona kadar
yazi = tel_no.get("1.0", tk.END)
# sondaki \n'den kurtuluyoruz
yazi = yazi[:-1]
print(yazi)
root = tk.Tk()
tel_no = tk.Text(root, width=16, height=3)
tel_no.place(x=5, y=10)
buton = tk.Button(root, text="ekrana yaz", command=yazdir)
buton.place(x=5, y=70)
root.mainloop()
“1.0”'daki 1 hangi satırdan itibaren olduğunu, 0 ise hangi karakterden itibaren olduğunu söylüyor. (Maalesef ikisi arasında 0 veya 1’den başlama konusunda bir tutarsızlık var.) tk.END
diyerek de sonuna kadar, yani ne var ne yok her şeyi alsın diyorsunuz. Ama sonuna kendisi bir adet line feed yani "\n"
ekliyor. Bundan kendiniz [:-1]
(veya belki rstrip("\n")
) ile kurtulabilirsiniz. Alternatif olarak ise tk.END
yerine (ki tk.END
aslında "end"
string’ine eşittir), "end-1c"
diyerek “sonundan 1 karakter eksik olsun” diyebilirsiniz. Yani
def yazdir():
# baştan sona kadar ama \n'yi alma
yazi = tel_no.get("1.0", "end-1c")
print(yazi)
Bu kullanım okunabilirlik ve niyeti daha açık belli etme açısından tercih edilebilir. print
yerine siz veriyi SQLite’a gönderebilirsiniz.
2 Beğeni
Çok teşekkür ederim bu yöntemi kullanarak programımı oluşturacağım 
1 Beğeni