如何为我的 gui 类中的所有 QWidgets、QLayouts、QFrames 等分配 ObjectNames? 像这样的代码只能在 PyQt4 中使用:
for w in gui.widgets():
w.setObjectName(str(w)
这在 PyQt5 中是如何工作的?另外,如何遍历所有对象而不是"仅"小部件?我知道这个问题有一些答案C++但我无法将它们翻译成 python。
主要的 QObject 或 QWidget 类没有widget()
函数,所以你可能在自己的代码中实现,但在更新 PyQt5 时忘记更新它。
要访问所有子对象,只需使用findChildren
和QObject
作为第一个参数,这将返回 QObject 类的所有后代,包括 QWidgets、QActions、项模型等:
for child in self.findChildren(QObject):
pass
由于默认情况下findChildren
以递归方式查找,因此还可以限制为当前对象的直接子对象:
for child in self.findChildren(QObject, options=FindDirectChildrenOnly):
pass
在这种情况下,结果将与self.children()
.
请注意,并非所有Qt中的类都继承自QObject。