PyQt 中插槽連接的Lambda 表達式
在PyQt 應用程式中自訂按鈕的單擊信號。 Lambda 函數提供了一種優雅的方式來定義這些連接,但了解其機制對於成功至關重要。
理解 Lambda 表達式
在 lambda 函數中,您可以在其中指定參數發出訊號時將傳遞到連接槽的括號。然而,當連接到 PyQt 訊號時,會出現一個警告。
QPushButton 的點選訊號包含一個表示按鈕狀態的參數。預設情況下,此參數會被 lambda 函數的可選參數覆寫。
錯誤方法:
button.clicked.connect(lambda x=idx: self.button_pushed(x))
在此範例中,當按一下任何按鈕時,lambda函數會接收按鈕狀態作為其參數,覆寫idx 的預期值。這會導致不正確的行為,即所有按鈕點擊都會觸發 idx 設定為 False 的相同插槽。
正確方法:
button.clicked.connect(lambda state, x=idx: self.button_pushed(x))
透過新增附加參數狀態,我們可以忽略按鈕的狀態並確保將正確的 idx 值傳遞給槽函數。
因此,當使用 lambda 表達式連接槽時,考慮訊號的附加參數以防止不正確的行為並在 PyQt 應用程式中實現所需的結果至關重要。
以上是如何在PyQt中正確使用Lambda表達式進行Slot連接?的詳細內容。更多資訊請關注PHP中文網其他相關文章!