문제

나는 내 것을 만들려고 노력하고 있습니다 QGroupBox 400px보다 커지면 스크롤 가능합니다.에 있는 내용은 QGroupBox for 루프를 사용하여 생성됩니다.이것은 그것이 어떻게 수행되었는지에 대한 예입니다.

mygroupbox = QtGui.QGroupBox('this is my groupbox')
myform = QtGui.QFormLayout()
labellist = []
combolist = []
for i in range(val):
    labellist.append(QtGui.QLabel('mylabel'))
    combolist.append(QtGui.QComboBox())
    myform.addRow(labellist[i],combolist[i])
mygroupbox.setLayout(myform)

이후의 가치 val 다른 요인에 따라 달라지며, myform 레이아웃 크기를 결정할 수 없습니다.이 문제를 해결하기 위해 다음을 추가했습니다. QScrollableArea 이와 같이.

scroll = QtGui.QScrollableArea()
scroll.setWidget(mygroupbox)
scroll.setWidgetResizable(True)
scroll.setFixedHeight(400)

불행히도 이는 그룹 상자에 아무런 영향을 미치지 않는 것 같습니다.스크롤바의 흔적이 없습니다.내가 뭔가를 놓치고 있는 걸까?

도움이 되었습니까?

해결책

명백한 오타 외에는(당신이 의도한 것이라고 확신합니다) QScrollArea), 귀하가 게시한 내용에는 아무런 문제가 없습니다.따라서 문제는 코드의 다른 곳에 있어야 합니다.레이아웃이 누락된 것일까요?

우리가 동일한 페이지에 있는지 확인하기 위해 다음과 같은 최소한의 스크립트가 예상대로 작동합니다.

from PyQt4 import QtGui

class Window(QtGui.QWidget):
    def __init__(self, val):
        QtGui.QWidget.__init__(self)
        mygroupbox = QtGui.QGroupBox('this is my groupbox')
        myform = QtGui.QFormLayout()
        labellist = []
        combolist = []
        for i in range(val):
            labellist.append(QtGui.QLabel('mylabel'))
            combolist.append(QtGui.QComboBox())
            myform.addRow(labellist[i],combolist[i])
        mygroupbox.setLayout(myform)
        scroll = QtGui.QScrollArea()
        scroll.setWidget(mygroupbox)
        scroll.setWidgetResizable(True)
        scroll.setFixedHeight(400)
        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(scroll)

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window(25)
    window.setGeometry(500, 300, 300, 400)
    window.show()
    sys.exit(app.exec_())
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top