2017-09-03 23 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

関連する問題