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