在 PyQt 應用程式中,插槽是發出訊號時呼叫的成員函數。這些訊號可以由各種 Qt 物件發出,例如按鈕或小部件。預設情況下,槽接收訊號傳遞的參數。但是,也可以將其他參數傳遞給槽。
考慮以下場景:您有一個定義名為 DiffP 的變數的函數。您想要將此變數傳遞給連接到按鈕點擊事件的插槽。
class MyWidget(QtWidgets.QWidget): def __init__(self): [...] self.button.clicked.connect(self.some_slot) def some_slot(self): # Here you want to access the 'DiffP' variable defined in another function
透過槽傳遞額外參數的一種方法是使用 lambda函數。 Lambda 函數是可以內聯定義的匿名函數。您可以建立一個 lambda 函數,它同時採用預設槽參數和要傳遞的額外參數。
class MyWidget(QtWidgets.QWidget): def __init__(self): [...] self.button.clicked.connect(lambda: self.some_slot("DiffP")) def some_slot(self, DiffP): # Here you can access the 'DiffP' variable
在此範例中,lambda 函數採用額外參數DiffP 並將其傳遞給some_slot 函數.
透過槽傳遞額外參數的另一種方法是使用functools.partial 函數。部分函數建立一個新函數,該函數部分應用了一些參數。您可以使用partial建立一個僅採用預設槽參數的函數,並將額外參數作為綁定參數傳遞。
from functools import partial class MyWidget(QtWidgets.QWidget): def __init__(self): [...] self.button.clicked.connect(partial(self.some_slot, "DiffP")) def some_slot(self, DiffP): # Here you can access the 'DiffP' variable
在此範例中,partial函數建立一個僅採用button_or_id參數的新函數並將 DiffP 參數綁定到它。當呼叫槽時,將使用正確的參數呼叫新函數。
以上是如何將額外參數傳遞給 PyQt 中的 Qt 插槽?的詳細內容。更多資訊請關注PHP中文網其他相關文章!