2016-06-27 4 views
0

Я создаю небольшое программное обеспечение PyQt gui для некоторых скриптов, которые я часто использую. Часть этого gui имеет список кнопок справа, а количество кнопок может варьироваться от каждого прогона gui. По этой причине я хотел бы иметь их в прокрутке. Это работает в порядке, но по какой-то причине область прокрутки не будет расширять последний бит, когда размер окна разрешает его (так что скроллер не будет показан).PyQt расширяет scrollarea полностью, когда окно достаточно большое

Он ведет себя так, как если бы максимальная высота была установлена ​​в другом месте, даже если я установил максимальную высоту, намного превышающую размер окна?!?

Если я установил минимальную высоту больше, чем виджет, скроллер скрыт, как ожидалось, но не если минимальное значение меньше, поэтому скроллер будет использоваться, когда окно меньше. Cutout, left with minimumheight of 550, and right with minimumheight of 200

self.Pvbox = QtGui.QVBoxLayout() 
    self.syncButton=QtGui.QPushButton('Sync') 
    self.syncButton.setMaximumWidth(100) 
    self.Pvbox.addWidget(self.syncButton) 

    PbuttonWdg = QtGui.QWidget() 
    Pbuttonlayout = QtGui.QVBoxLayout() 
    self.nbuttons=[] 
    c=0 
    for n in main.Pnames: 
     self.nbuttons.append(QtGui.QPushButton(str(n))) 
     self.nbuttons[-1].setMaximumWidth(80) 
     Pbuttonlayout.addWidget(self.nbuttons[-1]) 
     c+=1 
    PbuttonWdg.setLayout(Pbuttonlayout) 
    scroll=QtGui.QScrollArea() 
    scroll.setMaximumWidth(110) 
    scroll.setMinimumWidth(110) 
    scroll.setMinimumHeight(550) 
    scroll.setMaximumHeight(800) 
    scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded) 
    scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) 
    scroll.setWidgetResizable(False) 
    scroll.setWidget(PbuttonWdg) 
    self.Pvbox.addWidget(scroll) 

    self.Pvbox.addStretch(1) 
    self.localButton=QtGui.QPushButton('Local') 
    self.localButton.setMaximumWidth(100) 
    self.Pvbox.addWidget(self.localButton) 

ответ

0

Найдено проблема ...

"addStretch (1)" после ScrollArea, делает это растянуть часть начала растягиваться до ScrollArea полностью расширен по какой-то причине. Удаление этого подрамника делает scrollarea делать все расширяющиеся/растягивающиеся (если позволяет sizepolicy).

Итак, я считаю это решением, хотя оптимальным для меня было бы то, что scrollarea расширилась бы полностью до того, как какой-либо стрейч захватит верх ...