在Python tkinter中,Button小部件的「command」參數旨在指定一個函數當按下按鈕時執行。然而,初學者的一個常見誤解是,即使在聲明按鈕時,與「command」相關的函數也會被執行。
要理解這種行為,我們需要深入研究Python如何處理函數參數。當你將函數作為參數傳遞時,有兩種可能:
在您提供的範例程式碼中,Hello() 作為參數傳遞給Button 小部件,這表示該函數立即執行,並將其傳回值傳遞給“ command」。由於 Hello() 不會傳回任何內容,因此它會傳回 None,然後將其指派給按鈕的「command」參數,實際上什麼都不做。
要解決此問題並僅在單擊按鈕時執行該函數,您應該傳遞函數對象,如下所示:
hi = Button(frame, text="Hello", command=Hello)
這樣,當按下按鈕時, Hello() 函數將被呼叫並執行其預期的程式碼。
此外,如果需要向函數傳遞參數,可以使用lambda 表達式來包裝函數調用,如下所示:
hi = Button(frame, text="Hello", command=lambda: Goodnight("Moon"))
在這種情況下,lambda 表達式確保Goodnight()函數不會在按鈕聲明時執行,而是等待單擊按鈕並執行命令。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3