Jestem nowy w Pythonie i próbuję napisać program z tkinter. Dlaczego poniżej została uruchomiona funkcja Hello? Jak rozumiem, callback byłby wykonywany tylko po naciśnięciu przycisku? Jestem bardzo mylić ...Dlaczego parametr "polecenie" przycisku jest wykonywany po zadeklarowaniu?
>>> def Hello():
print("Hi there!")
>>> hi=Button(frame,text="Hello",command=Hello())
Hi there!
>>>
Dziękujemy! Oczywistym rezultatem jest; jak przekazywać argumenty? Teraz czytam o Lambdzie, wydaje się, że to może być po prostu odpowiedź. – wjakobw
@wjakobw - przekazać argument do funkcji lub przekazać funkcję jako argument? W pierwszym przypadku zadeklarujesz argumenty w definicji funkcji ex: 'def func (par1, par2):' w drugim, po prostu użyj nazwy funkcji bez nawiasu, jak to opisałem w mojej odpowiedzi. Skoro jesteś co prawda nowy w pytonie, czy mogę zaproponować [to czytanie] (http://www.diveintopython.net/)? Jest łatwy do naśladowania i bardzo przyjemny. – mac
Chciałbym przekazać zmienną jako argument po naciśnięciu przycisku. Zwykły sposób command = Hello (arg) nie zadziała, ponieważ wywołanie zwrotne zawiera następnie paranthezy i używa wartości zwracanej zamiast funkcji. * W powyższym przykładzie funkcja Hello nie przyjmuje żadnych argumentów, ale wyobraź sobie inny przypadek. – wjakobw