在 Qt 應用程式中連接槽時,可能需要向槽函數傳遞額外參數。這可以透過兩種方式完成:使用 lambda 函數或 functools.partial。
Lambda 函數可讓您在將訊號連接到插槽時傳遞額外參數作為關鍵字參數。以下是一般語法:
connect(lambda param1, param2, ..., arg1=val1, arg2=value2, ... : fun(param1, param2,... , arg1, arg2, ....))
其中:
在您的情況下,程式碼將是:
self.buttonGroup.buttonClicked['int'].connect(lambda i: self.input(i, "text")) @pyqtSlot(int) def input(self, button_or_id, DiffP): # Use the extra argument `DiffP` in the slot function ...
Functools。 partial 提供了另一種將額外參數傳遞給槽函數的方法。它會建立一個綁定到指定參數的新函數。一般語法為:
partial(fun, args1, arg2, ... )
其中:
以下是在程式碼中使用它的方法:
from functools import partial ... self.buttonGroup.buttonClicked['int'].connect(partial(self.input, "text")) @pyqtSlot(int) def input(self, DiffP, button_or_id): # `DiffP` will be passed as the first argument to the slot function ...
以上是如何使用 Lambda 函數或 functools.partial 將額外參數傳遞給 Qt 插槽?的詳細內容。更多資訊請關注PHP中文網其他相關文章!