编程语言
首页 > 编程语言> > python – 正确使用PyQt信号

python – 正确使用PyQt信号

作者:互联网

不久前我在Qt for C中做了一些工作;现在我正在使用PyQt.

我有一个QStackedWidget的子类,里面是QWidget的子类.在QWidget中,我想单击一个按钮,该按钮将转到QStackedWidget的下一页.我的(简化)方法如下:

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)

所以,基本上,我将continueButton单击信号连接到EventsPage nextPage信号,然后我将Stacked连接到nextPage方法.我可以在Stacked中深入研究EventsPage的内部并连接self.widget1.continueButton.clicked,但这似乎完全打败了信号和插槽的目的.

那么这种方法是否有意义,还是有更好的方法?

解决方法:

不,这很有道理.想想人们从建筑物顶部挥手的信号.他们不想过马路(所有那些楼梯……),所以他们看着其他建筑物上的其他人在做什么.这样,没有人必须关心建筑物内部的情况.

标签:python,pyqt,signals-slots
来源: https://codeday.me/bug/20190827/1741043.html