PyQt:检查当前小部件

Posted

技术标签:

【中文标题】PyQt:检查当前小部件【英文标题】:PyQt : Checking the current widget 【发布时间】:2022-01-13 07:38:12 【问题描述】:

我正在使用 QStackwidget,我想检查我是否在小部件 A 或 B 中。在 PyQt 文档中,它说我需要 currentwidget() 方法,该方法将返回当前小部件/页面。这是此方法在 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() 方法获取页面名称?

【问题讨论】:

【参考方案1】:

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() 方法也可能有用,因为它返回当前小部件的索引,而不是小部件本身。

【讨论】:

以上是关于PyQt:检查当前小部件的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5 - 在表格小部件的列中创建一个检查项,即使行数与旋转框不同

PyQt 小部件 connect() 和 disconnect()

将 PySide/PyQt 小部件嵌入到 Qt/C++ 应用程序中

PyQt - 如何将多个信号连接到同一个小部件

使用PyQt中的QCheckBox或QComboBox更改小部件可见性

从不同类添加的小部件内的 PyQt5 停止计时器