2017-09-03 28 views
1

나는 PyQt에서 스크롤 가능한 창을 만드는 것이 훨씬 쉬워야한다고 생각한다. 나는 창문 밖으로 나가는 레이블 목록을 가지고 있으며 그것을보기 위해 아래로 스크롤하고 싶다. 순간 코드는 나에게 오류를 제공하지 않습니다, 그러나 창은 나타나지 않습니다PyQt : 스크롤 가능한 창을 만드는 방법

class Example(QWidget): 

    def __init__(self): 
     super().__init__() 

     layout = QVBoxLayout() 

     lbl_arr = makeLabelArr() 

     for i in range(1,8): 
      qb = lbl_arr[i] 
      # qb.setFixedWidth(300) 
      layout.addWidget(qb) 

     layout.setAlignment(Qt.AlignTop) 

     scroll = QScrollArea() 
     scroll.setWidget(self) 
     scroll.setWidgetResizable(True) 
     scroll.setFixedHeight(400) 

     layout.addWidget(scroll) 

     self.setLayout(layout) 


     self.setGeometry(0, 0, 600, 220) 
     self.setWindowTitle('SnP watchlist') 

     self.show() 


if __name__ == '__main__': 

    app = QApplication(sys.argv) 
    #print(QDesktopWidget().availableGeometry()) 

    ex = Example() 
    sys.exit(app.exec_()) 
+0

, 당신의 코드의 들여 쓰기이에 대한 – Wasi

답변

1

이 같은 창 자체 QScrollArea, 확인 :

class Window(QScrollArea): 
    def __init__(self): 
     super(Window, self).__init__() 
     widget = QWidget() 
     layout = QVBoxLayout(widget) 
     layout.setAlignment(Qt.AlignTop) 
     for index in range(100): 
      layout.addWidget(QLabel('Label %02d' % index)) 
     self.setWidget(widget) 
     self.setWidgetResizable(True) 
0

당신은 scroll bar 위젯을 추가 한 후 layout을 설정해야합니다.

class Example(QWidget): 

    def __init__(self): 
     super().__init__() 

     layout = QVBoxLayout() 

     lbl_arr = makeArrayOfLabelsHTML() 

     for i in range(1,8): 
      qb = lbl_arr[i] 
      layout.addWidget(qb) 

     layout.setAlignment(Qt.AlignTop) 

     scroll = QScrollArea() 
     scroll.setWidget(self) 
     scroll.setWidgetResizable(True) 
     scroll.setFixedHeight(400) 
     layout.addWidget(scroll) 

     # set layout after adding scroll bar 
     self.setLayout(layout) 

     self.setGeometry(0, 0, 600, 220) 
     self.setWindowTitle('SnP watchlist') 

     self.show() 



if __name__ == '__main__': 

     app = QApplication(sys.argv) 
     #print(QDesktopWidget().availableGeometry()) 

     ex = Example() 
     sys.exit(app.exec_()) 
+0

감사를 해결하시기 바랍니다,하지만 여전히 윈도우 내가 할 경우에도 표시되지 않습니다를 오류를받지 못함 – user3755529