我有两个按钮,用户可以单击这些按钮并打开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)
.....
但这不起作用,因为当我启动程序时,它首先给我一个文件选择对话框。
有人可以告诉我如何处理将参数传递给回调函数吗?
答案 0 :(得分:3)
这里的问题是你传递的是函数返回的值,而不是函数本身。要做你想做的事,你需要使用functools.partial()
创建一个带有预填充参数的新函数:
from functools import partial
...
QtCore.QObject.connect(..., partial(self.SelectLogFileToJoin, 1))