Domanda

Questo mi sta facendo impazzire un po '. Spero che qualcuno possa chiarire questo per me. L'esecuzione del seguente codice risulta nella prima istruzione di stampa che è un elenco con un elemento il QVBoxLayout oggetto. Ho impostato due oggetti su layout Perché ne ottengo solo uno?

La seconda istruzione di stampa fornisce due oggetti il QHBoxLayout e QPushButton. Non è QPushButton un figlio di layout?

Mi aspetterei layout.children() per darmi due oggetti QPushButton e QVBoxLayoute self.children() per darmi un oggetto QHBoxLayout. Cosa mi manca?

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_())
È stato utile?

Soluzione

Immagino che la nota del documentazione spiega questo chiaramente:

Nota: i widget in un layout sono i bambini del widget su cui è installato il layout, non del layout stesso. I widget possono avere solo altri widget come genitore, non i layout.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top