如何在pyside/pyqt/qt中获取QWidget的所有子组件?

17
我正在使用 PySide(Qt)开发桌面应用程序,我想访问(迭代)QWidget的所有行编辑组件。在 Qt 中,我找到了两种方法 findChild 和 findChildren,但是没有找到适当的示例,我的代码显示错误,"'form' 对象没有属性 'findChild'。" 这里的 'form' 是一个 QWidget 表单,包含了 lineEdit、comboboxes、Qpushbuttons 等组件。

代码:

lineEdits = form.findChild<QLineEdit>() //This is not working

lineEdits = form.findChild('QLineEdit) //This also not working
2个回答

33
findChildfindChildren在PySide/PyQt4中的签名是不同的,因为在Python中没有实际等效于C++强制类型转换语法。相反,您必须将一个类型(或类型的tuple)作为第一个参数传递,并且可以将字符串作为第二个参数传递(用于匹配objectName)。因此,您的示例应该类似于以下内容:
lineEdits = form.findChildren(QtGui.QLineEdit)

请注意,findChildfindChildrenQObject的方法 - 因此,如果您的窗体没有它们,它就不能是QWidget(因为所有窗口小部件都继承自QObject)。


@ekhumoro,你能帮我看看这个问题吗:https://dev59.com/G4Lba4cB1Zd3GeqPbjzM - Ejaz

-4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接