Lambda kullanmamak

Merhaba iyi geceler, aşağıdaki command bölümünü lambda kullanmadan ve herhangi bir kütüphane kullanmadan sadece butona tıklandığında nasıl çalıştırabilirim ( Parantezli ).

import time
from tkinter import*

def deneme():
    print("test123")


root = Tk()
Button(text="Deneme",command=deneme()).pack()
root.mainloop()

Merhaba,

Burada eğer parantez kullanırsanız fonksiyon o anda çalışır ve parametre olarak fonksiyonun döndürdüğü değer verilir. Verdiğiniz kodda fonksiyon hiçbir şey döndürmediği için None değeri verir. Butona tıkladığınızda hata alırsınız.

Çözüm: Fonksiyonu parantez olmadan yazın. Bu şekilde “callable” yani çağrılabilir bir ifadeyi parametre olarak vermiş olursunuz. Esasında lambda kullanırken de bunu yapıyoruz.

1 Beğeni

Neden lambda kullanmamak istediniz?

1 Beğeni

1 Beğeni

Merhaba,
command parametresine lambda yazdığınızda, lambda fonksiyonunun adresi command parametresinin değeri olur. command parametresine öyle bir fonksiyonun adresini yazmalısınız ki, bu yazdığınız fonksiyon parametre alabilmeli, bu parametre, fonksiyonun içinde tanımlanmış bir başka fonksiyon tarafından kullanılmalı ve bu içteki fonksiyonun adresi de dıştaki fonksiyon tarafından döndürülmeli. Aşağıdaki fonksiyon tam da bu dediğimi yapıyor işte.

import tkinter as tk


def outer(*args, **kwargs):
    def inner():
        print(args, kwargs)
    return inner


root = tk.Tk()
tk.Button(text="Deneme",command=outer("merhaba", x=1)).pack()
root.mainloop()
3 Beğeni

neden lambda kullanmak istemiyorsun