Il y a quelque temps, j'ai travaillé sur Qt pour C++; maintenant je travaille avec PyQt.Utilisation correcte des signaux PyQt
J'ai une sous-classe de QStackedWidget, et à l'intérieur de cette sous-classe de QWidget. Dans le QWidget je veux cliquer sur un bouton qui va à la page suivante du QStackedWidget. Mon approche (simplifiée) est la suivante:
class Stacked(QtGui.QStackedWidget):
def __init__(self, parent=None):
QtGui.QStackedWidget.__init__(self, parent)
self.widget1 = EventsPage()
self.widget1.nextPage.connect(self.nextPage)
self.widget2 = MyWidget()
self.addWidget(self.widget1)
self.addWidget(self.widget2)
def nextPage(self):
self.setCurrentIndex(self.currentIndex() + 1)
class EventsPage(QtGui.QWidget):
nextPage = QtCore.pyqtSignal()
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.continueButton = QtGui.QPushButton('Continue')
self.continueButton.clicked.connect(self.nextPage)
Donc, au fond, je me connecte le signal de continueButton clicked
au signal EventsPage nextPage
, que je puis connecter à empilée à la méthode nextPage
. Je pourrais juste plonger dans les internes de EventsPage dans Stacked et se connecter self.widget1.continueButton.clicked
, mais cela semblait complètement vaincre le but des signaux et des machines à sous.
Cette approche a-t-elle un sens, ou existe-t-il un meilleur moyen?
+1 Belle analogie :) – Skilldrick