将两个按钮连接到同一个回调函数两个参数



我有两个按钮,用户可以单击它们,并将打开FileDiagloag以选择一个文件。我需要用户选择两个文件,但我想要一个函数来处理两个按钮调用。所以在我的初始化中,我有:

QtCore.QObject.connect(self.ui.Button_SelectJoinFiles_1, QtCore.SIGNAL('clicked()'), self.SelectLogFileToJoin(1))
QtCore.QObject.connect(self.ui.Button_SelectJoinFiles_2, QtCore.SIGNAL('clicked()'), self.SelectLogFileToJoin(2))

该函数基本上是这样的:

def SelectLogFileToJoin(self, ButtonNum):
        if(ButtonNum==1):
        ......
        if(ButtonNum==2)
        .....

但这不起作用,因为当我启动程序时,它会通过给我一个文件选择对话框来启动。

有人可以告诉我如何处理将参数传递给回调函数吗?

这里的问题是你传递的是函数返回的值,而不是函数本身。要执行所需的操作,您需要使用 functools.partial() 创建一个带有预填充参数的新函数:

from functools import partial
...
QtCore.QObject.connect(..., partial(self.SelectLogFileToJoin, 1))

最新更新