首頁 >後端開發 >Python教學 >如何在 PyQt 中正確連接插槽與 Lambda 函數?

如何在 PyQt 中正確連接插槽與 Lambda 函數?

Linda Hamilton
Linda Hamilton原創
2024-11-09 02:10:02377瀏覽

How to Correctly Connect Slots with Lambda Functions in PyQt?

在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn