pyQt QLayout проблема - PullRequest
       20

pyQt QLayout проблема

0 голосов
/ 18 февраля 2012

Это сводит меня с ума. Надеюсь, что кто-то может прояснить это для меня. Выполнение следующего кода приводит к тому, что первый оператор print представляет собой список с одним элементом - объектом QVBoxLayout. Я установил два объекта на layout, почему я получаю только один?

Второй оператор print дает двум объектам QHBoxLayout и QPushButton. Разве QPushButton не ребенок layout?

Я ожидаю, что layout.children() даст мне два объекта QPushButton и QVBoxLayout и self.children() чтобы дать мне один объект QHBoxLayout. Чего мне не хватает?

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_())

1 Ответ

3 голосов
/ 18 февраля 2012

Полагаю, примечание из документации объясняет это достаточно ясно:

Примечание. Виджеты в макете являются дочерними элементами виджета, на котором макет установлен, а не самого макета. Виджеты могут иметь только другие виджеты как родительские, а не макеты.

...