2012-02-22 8 views
7

Estoy desarrollando una aplicación de escritorio usando pyside (qt), quiero acceder (iterar) todos los componentes de edición de línea de QWidget. En qt encontré dos métodos findChild y findChildren pero no se encontró un ejemplo adecuado y My code muestra error, 'form' object no tiene el atributo 'findChild'. Aquí 'forma' es la forma Qwidget consisten componentes LineEdit, cuadros combinados, Qpushbuttons etc.¿Cómo obtener todos los componentes secundarios de QWidget en pyside/pyqt/qt?

Código:

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

lineEdits = form.findChild('QLineEdit) //This also not working 

Respuesta

16

Las firmas de findChild y findChildren son diferentes en PySide/PyQt4 porque no hay un equivalente real fundido a la sintaxis de C++ en Python.

En su lugar, debe pasar un tipo (o tuple de tipos) como primer argumento, y una cadena opcional como segundo argumento (para hacer coincidir el objectName).

Así que su ejemplo debería ser algo como esto:

lineEdits = form.findChildren(QtGui.QLineEdit) 

Tenga en cuenta que findChild y findChildren son métodos de QObject - así que si su forma no los tiene, no puede ser un QWidget (porque todos los widgets heredan QObject)

+0

@ekhumoro podría ayudarme aquí: http://stackoverflow.com/questions/25164853/how-to-use-findchildren#25165738 – Ejaz

Cuestiones relacionadas