【问题标题】:Using PyQt signals correctly正确使用 PyQt 信号
【发布时间】:2011-02-07 00:14:39
【问题描述】:

不久前,我在 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 clicked 信号连接到 EventsPage nextPage 信号,然后我将其在 Stacked 中连接到 nextPage 方法。我可以在 Stacked 中深入研究 EventsPage 的内部结构并连接 self.widget1.continueButton.clicked,但这似乎完全违背了信号和插槽的目的。

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

【问题讨论】:

    标签: python pyqt signals-slots


    【解决方案1】:

    不,这完全有道理。将信号想象为人们从建筑物顶部挥手。他们不想过马路(所有那些楼梯……),所以他们看其他建筑物上的其他人在做什么。这样一来,任何人都不必关心建筑物内发生的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-21
      • 2011-08-08
      • 1970-01-01
      • 2017-10-13
      • 2021-12-17
      • 2016-07-25
      • 1970-01-01
      相关资源
      最近更新 更多