2017-09-03 2 views
1

Ich denke, es sollte viel einfacher sein, ein rollbaren Fenster in PyQt zu erstellen. Ich habe eine Liste von Labels, die aus dem Fenster gehen und ich würde gerne nach unten scrollen, um sie zu sehen. Im Moment wird der Code mir keinen Fehler geben, aber das Fenster scheint einfach nicht:PyQt: Wie ein scrollbare Fenster erstellen

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

Bitte fixieren die Vertiefung Ihrer Code-Schnipsel – Wasi

Antwort

1

Machen Sie das Fenster selbst ein QScrollArea, wie folgt aus:

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

Sie layout nach dem Hinzufügen des scroll bar Widget setzen sollen.

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

Dank für diese, aber noch zeigen, wird das Fenster nicht auf, obwohl ich keine Fehler erhalten – user3755529