2017-06-26 36 views
0

首先,添加滾動區,這裏是我的代碼:PyQt5 - 無法在我的窗口

class UpdateFrame(QtWidgets.QFrame): 

    def __init__(self, parent=None): 
     super().__init__(parent) 

     self.setFixedSize(579, 450) 
     self.setStyleSheet('background-color: white;' 
          'border: 1px solid #4f4f51;' 
          'border-radius: 5px;' 
          'margin: 5px;' 
          'padding: 5px;') 

     self.setLayout(QtWidgets.QVBoxLayout()) 

     for i in range (5): 
      listFrame = QtWidgets.QFrame() 
      listFrame.setStyleSheet('backgrounf-color: white;' 
            'border: 1px solid #4f4f51;' 
            'border-radius: 0px;' 
            'margin: 2px;' 
            'padding: 2px') 
      self.layout().addWidget(listFrame) 

到目前爲止,該代碼根據我for函數的數量僅增加一個框架。我想添加一個滾動條,以便這些框架將顯示在此欄區域內。所以,對於我在前兩三次之後添加的每一幀,我希望它們在滾動條時顯示出來。我已經嘗試在這裏搜索,但沒有爲我工作。也許我錯過了一些東西,我真的不知道。

謝謝大家的期待。

回答

0

爲了做到這一點,我認爲你需要一個包含QScrollArea的「外部」框架或小部件,然後你可以將內部小部件添加到足夠大的情況下允許滾動的內部小部件。我希望下面的例子足以讓你開始實現這一點,無論你打算如何:

import sys 
from PyQt5.QtWidgets import * 
from PyQt5.QtCore import * 
from PyQt5.QtGui import * 

class OuterFrame(QMainWindow): 
    def __init__(self, parent=None): 
     # Initialize the Main Window 
     super(OuterFrame, self).__init__(parent) 

     # Spec out the Outer Frame 
     self.setFixedSize(579, 450) 
     self.setStyleSheet('background-color: white;' 
          'border: 1px solid #4f4f51;' 
          'border-radius: 5px;' 
          'margin: 5px;' 
          'padding: 5px;') 

     # Create a Scroll Area in this Frame 
     self.scroll_area = QScrollArea() 

     # Calling Our Frame Updater 
     frameWidget = UpdateFrame(self) 

     # Set the frame widget to be part of the scroll area 
     self.scroll_area.setWidget(frameWidget) 
     self.scroll_area.setWidgetResizable(True) 
     self.layout().addWidget(self.scroll_area) 

class UpdateFrame(QFrame): 
    def __init__(self, parent=None): 
     super(UpdateFrame, self).__init__(parent) 

     layout = QVBoxLayout() 
     self.setLayout(layout) 

     for i in range(25): 
      listFrame = QFrame() 
      listFrame.setStyleSheet('background-color: white;' 
            'border: 1px solid #4f4f51;' 
            'border-radius: 0px;' 
            'margin: 2px;' 
            'padding: 2px') 
      listFrame.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) 
      listFrame.setMinimumSize(QSize(50, 50)) 

      layout.addWidget(listFrame) 


if __name__ == "__main__": 
    app = QApplication(sys.argv) 
    mainWindow = OuterFrame() 
    mainWindow.show() 
    sys.exit(app.exec_()) # only need one app, one running event loop 
` 
+0

非常感謝你!這有很大幫助。我相信這足以解決該滾動區域的任何問題! –