在PyQt 中將槽與Lambda 函數連接
嘗試將槽與lambda 函數連接時,了解參數的處理方式至關重要。在提供的程式碼範例中,在循環連接多個按鈕時會出現問題。
在前兩個按鈕中,正確定義並連接了lambda 表達式:
button_1.clicked.connect(lambda x:self.button_pushed(1)) button_2.clicked.connect(lambda x:self.button_pushed(2))
對於按鈕連接在循環內,問題在於lambda 表達式:
button.clicked.connect(lambda x=idx: self.button_pushed(x))
在這種情況下,QPushButton.clicked 訊號發出一個指示按鈕狀態的參數。但是,當連接到 lambda 插槽時,可選參數 idx 會被按鈕的狀態覆蓋。
要解決此問題,應如下定義連接:
button.clicked.connect(lambda state, x=idx: self.button_pushed(x))
這將忽略按鈕狀態並將正確的值傳遞給 button_pushed 方法。
總之,在連接槽時必須注意傳遞給 lambda 函數的參數。透過正確處理發出的訊號的參數,您可以確保將正確的值傳遞給您的方法。
以上是如何在 PyQt 中正確連接插槽與 Lambda 函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!