PyQt:检查当前小部件

PyQt : Checking the current widget

我正在使用 QStackwidget,我想检查我是在 Widget A 还是 B。在 PyQt 文档中,它说我需要 currentwidget() 方法,它将 return 当前 widget/page。这是 python 中此方法的输出:

print(self.ui.stackedWidget.currentWidget()) 

控制台显示如下:

<PyQt5.QtWidgets.QWidget object at 0x0000203A1009160> 

所以它显示了我当前所在的小部件的地址。

但是我要实现的是下面的

if self.ui.stackedWidget.currentWidget() == page A:
   #action1
elif self.ui.stackedWidget.currentWidget() == page B:
   #action2
and so on ...

有没有办法通过currentWidget()方法获取页面名称?

QStackedWidget.currentWidget() 为您提供了小部件本身,因此您可以直接比较它:

firstPageWidget = QWidget()
secondPageWidget = QWidget()
thirdPageWidget = QWidget()

stackedWidget = QStackedWidget()
stackedWidget.addWidget(firstPageWidget)
stackedWidget.addWidget(secondPageWidget)
stackedWidget.addWidget(thirdPageWidget)

currentWidget = stackedWidget.currentWidget()

if currentWidget == firstPageWidget:
    print("In first page")
elif currentWidget == secondPageWidget:
    print("In second page")
elif currentWidget == thirdPageWidget:
    print("In third page")

方法 QStackedWidget::currentIndex() 也可能有用,因为它 returns 当前小部件的索引而不是小部件本身。