在Python tkinter 中,Button 小部件的「command」參數旨在指定一個函數當按下按鈕時執行。然而,初學者的一個常見誤解是,即使在聲明按鈕時,與「command」相關的函數也會被執行。
要理解這種行為,我們需要深入研究 Python 如何處理函數參數。當您將函數作為參數傳遞時,有兩種可能性:
在您提供的範例程式碼中,Hello() 作為參數傳遞給Button 小部件,這表示該函數立即執行,並將其傳回值傳遞給「command」。由於 Hello() 不會傳回任何內容,因此它會傳回 None,然後將其指派給按鈕的「command」參數,實際上什麼都不做。
要解決此問題並僅在單擊按鈕時執行該函數,你應該傳遞函數對象,如下所示:
<code class="python">hi = Button(frame, text="Hello", command=Hello)</code>
這樣,當按下按鈕時,Hello( ) 函數將被呼叫並執行其預期的程式碼。
此外,如果需要向函數傳遞參數,可以使用lambda 表達式來包裝函數調用,如下所示:
<code class="python">hi = Button(frame, text="Hello", command=lambda: Goodnight("Moon"))</code>
在這種情況下,lambda 表達式確保Goodnight( ) 函數不會在按鈕聲明時執行,而是等待按一下按鈕並執行命令。
以上是按鈕的'命令”參數功能何時執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!