首頁 > 後端開發 > Python教學 > 如何使用 Lambda 函數或 functools.partial 將額外參數傳遞給 Qt 插槽?

如何使用 Lambda 函數或 functools.partial 將額外參數傳遞給 Qt 插槽?

Mary-Kate Olsen
發布: 2024-11-19 10:17:02
原創
627 人瀏覽過

How to Pass Extra Arguments to Qt Slots Using Lambda Functions or functools.partial?

透過 Connect 傳遞額外參數

在 Qt 應用程式中連接槽時,可能需要向槽函數傳遞額外參數。這可以透過兩種方式完成:使用 lambda 函數或 functools.partial。

使用 Lambda 函數

Lambda 函數可讓您在將訊號連接到插槽時傳遞額外參數作為關鍵字參數。以下是一般語法:

connect(lambda param1, param2, ..., arg1=val1, arg2=value2, ... : fun(param1, param2,... , arg1, arg2, ....))
登入後複製

其中:

  • 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

Functools。 partial 提供了另一種將額外參數傳遞給槽函數的方法。它會建立一個綁定到指定參數的新函數。一般語法為:

partial(fun, args1, arg2, ... )
登入後複製

其中:

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板