Pregunta

Esto me está volviendo un poco loco. Espero que alguien pueda aclarar esto para mí. Ejecutar el siguiente código da como resultado que la primera declaración de impresión sea una lista con un elemento en el QVBoxLayout objeto. Establecí dos objetos en layout ¿Por qué consigo solo uno?

La segunda declaración de impresión le da a dos objetos el QHBoxLayout y QPushButton. No es QPushButton un hijo de layout?

Yo esperaría layout.children() para darme dos objetos QPushButton y QVBoxLayouty self.children() para darme un objeto QHBoxLayout. ¿Qué me estoy perdiendo?

from PySide.QtGui import *
import sys

class Main(QWidget):

    def __init__(self, parent=None):
        super(Main, self).__init__(parent)

        layout = QHBoxLayout(self)
        layout.addWidget(QPushButton("foo"))

        layout.addLayout(QVBoxLayout())

        print layout.children()
        print self.children()

app = QApplication([])
main = Main()
main.show()
sys.exit(app.exec_())
¿Fue útil?

Solución

Supongo que la nota del documentación explica esto con suficiente claridad:

Nota: Los widgets en un diseño son hijos del widget en el que se instala el diseño, no del diseño en sí. Los widgets solo pueden tener otros widgets como padre, no diseños.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top