Merhabalar. Aşağıdaki kodda butona basılınca butona eklediğim fonksiyondaki sayının 5 artmasını istiyorum fakat ben butona basmadan ekrana basıyor. Nerede hata yapmış olabilirim?
Böyle bir kullanımda önce artır(5) kısmı çalıştırılır, daha sonra geri döndürdüğü değer (yani burada None) command parametresi olur. Bu yüzden fonksiyon en başta çalışıyor ve bir daha çalışmıyor. Bir lambda fonksiyon ile bu işi halledebilirsiniz:
Merhaba. Öneriniz için tşkler. Yalnız ben o kodu test olarak yazdım. butona bastığımda yalnızca lambda ile yapamayacağım başka kodlar da olacak. Bunun için önerileriniz var mı?
Eğer lambda fonksiyonlar işinizi görmüyorsa normal bir fonksiyon olarak oluşturabilirsiniz (@dildeolupbiten’in örneğindeki gibi). Sonuçta lambda fonksiyonlar sadece daha az kod yazmamızı sağlıyor.
Dünden bugüne hallettim o problemi yardımlarınızla tşkler. Şimdi de başka bir kod parçacığında aklım karıştı.
from tkinter import *
root = Tk()
numbers_dict = {}
def show(temp):
print(temp)
def put():
for i in range(1, 3):
numbers_dict[str(i)] = Button(root, text=i, command=lambda:show(i))
numbers_dict[str(i)].pack()
put()
root.mainloop()
Yukarıdaki programda 2 adet buton oluşturuyorum. Sonrasında butona tıkladığımda buton değerini ekrana basmasını istiyorum ama başarılı olamıyorum. 1 yazan butona da bassam 2 ye de bassam sonuç olarak 2 yazıyor. Nerede hata yapıyorum?