0

我有两个按钮,用户可以单击它们并打开 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)
        .....

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

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

4

1 回答 1

3

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

from functools import partial

...

QtCore.QObject.connect(..., partial(self.SelectLogFileToJoin, 1))
于 2012-06-13T15:50:17.860 回答