常见的一个问题就是如何向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/

相关文章:

  • 2021-12-19
  • 2021-07-25
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-14
  • 2022-12-23
  • 2021-11-10
猜你喜欢
  • 2022-12-23
  • 2021-06-16
  • 2022-12-23
  • 2022-12-23
  • 2021-12-08
  • 2021-05-26
  • 2022-12-23
相关资源
相似解决方案