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

时间:2012-06-13 15:46:26

标签: python qt callback pyqt signals

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

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)
        .....

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

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

1 个答案:

答案 0 :(得分:3)

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

from functools import partial

...

QtCore.QObject.connect(..., partial(self.SelectLogFileToJoin, 1))
相关问题