向PySide/PyQt的slot中传递额外参数

常见的一个问题就是如何向PySide/PyQt的slot中传递额外的参数。slot的机理就是将signal和slot建立关联,signal的参数能够传递到slot中,但额外的参数(用户自定义的)并不能直接传递进去。
但现实中传递用户自定义的参数还是很有意义的,这样一来用户就可以定义一个slot来处理多个signals,只是通过参数来区分即可。
如果实现呢?
一个简单的方法就是借助于lambda,下面是一个简单的例子:

self.configInqAct = QtGui.QAction("Inquiry", self)
self.configInqAct.setStatusTip("Inquiry all the config files")
self.configInqAct.triggered.connect(lambda:self.process_config("010010", ""))

def process_config(self, tran_code, data):
self.statusBar().showMessage("tran_code = %s, data = %s" %(tran_code, data))

当然也可通过重载来实现,具体可以参阅 http://qt-project.org/wiki/Signals_and_Slots_in_PySide

参考资料:
http://qt-project.org/wiki/Signals_and_Slots_in_PySide
http://eli.thegreenplace.net/2011/04/25/passing-extra-arguments-to-pyqt-slot/

原文地址:https://www.cnblogs.com/Jerryshome/p/2411774.html