On Mon, 08 Mar 2010 17:29:48 -0500, Mark Visser <ma...@lumierevfx.com> wrote: > Is there some reason new-style connection from any signal to > QSignalMapper.map do not appear to work? > > Using old-style self.connect works, i.e.: > | > #self.connect(self.b1, SIGNAL("clicked()"), > # self.mapper, SLOT("map()")) > #self.connect(self.b2, SIGNAL("clicked()"), > # self.mapper, SLOT("map()")) > | > But using new-style self.<signal>.connect does not: > > ||| self.b1.clicked.connect(self.mapper.map) > self.b2.clicked.connect(self.mapper.map) > | > Here's a complete example:| > ========================================= > from PyQt4.QtCore import * > from PyQt4.QtGui import * > > app = QApplication([]) > > class Test(QWidget): > def __init__(self, parent=None): > super(Test, self).__init__(parent) > layout = QVBoxLayout() > > self.b1 = QPushButton("B1") > self.b2 = QPushButton("B2") > > layout.addWidget(self.b1) > layout.addWidget(self.b2) > > self.setLayout(layout) > > self.mapper = QSignalMapper(self) > > self.mapper.setMapping(self.b1, "B1") > self.mapper.setMapping(self.b2, "B2") > > self.b1.clicked.connect(self.mapper.map) > self.b2.clicked.connect(self.mapper.map) > > #self.connect(self.b1, SIGNAL("clicked()"), > # self.mapper, SLOT("map()")) > #self.connect(self.b2, SIGNAL("clicked()"), > # self.mapper, SLOT("map()")) > > self.mapper.mapped[QString].connect(self.sayIt) > > @pyqtSlot(QString) > def sayIt(self, name): > print name > > > t = Test() > > t.show() > > app.exec_() > ||=========================================|
It's actually a problem with QSignalMapper.map() being called from a proxy rather than new-style connections. The workaround is to explicitly specify a signal that is compatible with map()... self.b1.clicked[()].connect(self.mapper.map) Tonight's PyQt snapshot will be smarter about finding a usable Qt slot before deciding that it needs to use a proxy so that the workaround won't be necessary. Thanks, Phil _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt