」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼按鈕“命令”在聲明後立即執行?

為什麼按鈕“命令”在聲明後立即執行?

發佈於2024-11-01
瀏覽:530

Why Does the Button \

為什麼在聲明時執行 Button 參數「command」?

在 Python 中,Button 小部件的「command」參數負責定義回呼函數。然而,當這個回調函數似乎在聲明按鈕後立即執行時,用戶可能會感到困惑。

當「command」參數被指派函數呼叫表達式而非函數物件時,就會出現此問題。例如:

def Hello():
    print("Hi there!")

Button(frame, text="Hello", command=Hello())  # Function call expression

在此程式碼中,表達式「Hello()」立即呼叫Hello函數,並傳回其傳回值。結果,回調函數在建立 Button 之前執行,導致「Hi There!」訊息被印到控制台。

要避免此問題並將函數物件指派給「command」參數,請使用不含括號的函式名稱:

Button(frame, text="Hello", command=Hello)  # Function object

函數物件保存對其程式碼的引用,這些程式碼將在呼叫回調時執行。另外,如果需要傳遞參數,可以使用lambda 表達式:

Button(frame, text="Hello", command=lambda: Goodnight("Moon"))

在本例中,lambda 表達式包裝Goodnight("Moon") 調用,延遲其執行,直到單擊按鈕。

版本聲明 本文轉載於:1729295836如有侵犯,請洽[email protected]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3