python – 使用QSignalMapper和实例方法将PySide连接到信号
作者:互联网
我有一个带桌子的小应用程序.该表在每行上都有一些数据和一个按钮.这些按钮应允许用户删除相应的行数据.我试图通过点击按钮信号来实现它,但我需要传递行号,所以我尝试使用QSignalMapper,如下面的摘录所示
btnRemoveItem = QPushButton()
btnRemoveItem.clicked.connect(self.removeItem)
self.mapper = QSignalMapper(self)
self.connect(btnRemoveItem, QtCore.SIGNAL("clicked()"), self.mapper,
QtCore.SLOT("map()"))
self.mapper.setMapping(btnRemoveItem, nextRow)
self.connect(self.mapper, QtCore.SIGNAL("mapped(int)"), self.removeItem(),
QtCore.SIGNAL("clicked(int)"))
问题是,我的removeItem(self,index)方法是一个实例方法(因为我的表属于一个特定的类),我无法以一种我可以将自己与索引一起传递的方式映射它.
目前,我的代码失败,出现以下错误:
TypeError: removeItem() takes exactly 2 arguments (1 given)
有没有办法使这项工作正常?或者在PySide中使用QSignalMapper映射实例方法是不可能的?
解决方法:
我试图在PyQt中重现你的代码,但我并不完全了解Pyside和PyQt之间的差异,所以我的答案更多的是猜测.
尝试删除代码的第二行,并将最后一行替换为:
self.mapper.mapped.connect(self.removeItem)
标签:python,qt,pyside,signals-slots 来源: https://codeday.me/bug/20190825/1716984.html