Складная коробка PyQt5 с динамической высотой макета c - PullRequest
0 голосов
/ 15 апреля 2020

Я использую складную коробку из этого поста , и я попытался создать макет в этой складной коробке, в которую могут быть добавлены виджеты, в зависимости от пользователя. Однако эти виджеты перекрываются, потому что высота сворачиваемого фиксирована. Как я могу заставить высоту всегда оборачивать содержимое? Я попытался вызвать setContentLayout снова из дочернего макета, но это не работает.

Класс GroupSubStyle - это просто QGroupbox с пользовательскими виджетами в нем

class GridStyle(QGridLayout):
    def __init__(self, parent, *args, **kwargs):
        super(GridStyle, self).__init__(*args, **kwargs)

        self.grid_pos = [0, 0]
        self.styles = []
        self.parent = parent

        groupStyle = GroupSubStyle()
        groupStyle.combo_plot.currentIndexChanged.connect(self._add_substyle)
        self.addWidget(groupStyle, self.grid_pos[0], self.grid_pos[1])
        self.grid_pos[1] += 1
        self.styles.append(groupStyle)

    def _add_substyle(self):

        if self.styles[-1].combo_plot.currentText() != "N/A" and self.grid_pos != [3, 1]:
            groupStyle = GroupSubStyle()
            groupStyle.combo_plot.currentIndexChanged.connect(self._add_substyle)

            self.addWidget(groupStyle, self.grid_pos[0], self.grid_pos[1])
            self.grid_pos[1] += 1
            self.styles.append(groupStyle)
            if self.grid_pos[1] >= 3:
                self.grid_pos[1] = 0
                self.grid_pos[0] += 1
            self.parent.setContentLayout(self)

Этот класс помещен в разборном здесь:

 cbox_style = CollapsibleBox("Style")
 self.grid_style = GridStyle(cbox_style)

 cbox_style.setContentLayout(self.grid_style)
 vbox.addWidget(cbox_style)
...