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