首页 > 解决方案 > 在 PyQt5 中,我们如何获取焦点小部件的名称/对象名称?

问题描述

在我们的 PyQt5 程序中,我们多次使用 Qline Edits、QcheckBox、QListwidget。

如何知道:

  1. 我们的程序中使用了哪些带有 Widget 名称的小部件?
  2. 如何获取/返回当前具有焦点的小部件的名称(用户分配的名称)

标签: pythonpyqtpyqt5

解决方案


正如@Heike 建议的那样,您可以通过QApplication.focusWidget获得对具有焦点的小部件的引用

根据小部件的创建方式,它们可能没有 objectName。如果您使用像 Designer 或 Creator 这样的 GUI 将小部件拖放到表单上,那么您将设置对象名称。但是,如果您在代码中创建表单,则可能根本没有设置 objectName。在这种情况下,您只需确保在代码中设置 objectName。您可以看到我的这个问题以讨论设置 objectName 但切入正题,您可以objectName在代码中声明小部件时将其用作关键字参数,例如:

self.MyWidget = QWidget(objectName = MyWidget)

稍后,如果您想获取具有焦点的小部件的名称,您将使用

widgetname = self.focusWidget().objectName()

或者你可以对参考做一些事情:

widget = self.focusWidget()

推荐阅读