PyQt5中的Qscrollbar没有显示

时间:2018-10-25 17:01:40

标签: python pyqt pyqt5 qscrollarea

我需要在窗口中添加学生信息(看起来像一张桌子)。这是在名为“ addStudentStats”的函数中完成的,并将其添加到主窗口小部件中。我试图使另一个小部件插入滚动条,然后将此小部件插入到主窗口中。但这没有用。然后,我尝试使整个窗口可滚动,但我也做不到。如果任何人都可以编写那几行代码(我认为很少,但是不知道哪一行),我会很高兴的。

在此处阅读

我已经在窗口中添加了一个滚动条。该程序将数据填充到屏幕上,但是我无法滚动

jsPlumb.connect()

1 个答案:

答案 0 :(得分:0)

问题很简单QScrollArea是一个容器,用于显示另一个大尺寸的小部件,而该小部件是您通过setWidget()方法传递的。 QScrollArea使用小部件的sizeHint()计算必要的大小,因此在您的情况下,提示问题的是小部件,因为其sizeHint()0, 0。为什么是0, 0?因为里面没有任何东西,因为标签是QScrollArea的子元素,而不是小部件;即使它没有sizeHint(),因为它至少有两种计算方法:布局为您提供了该信息,但是在您的情况下,您可以使用它,其二是为小部件设置固定大小,这就是我选择的解决方案,我不知道它是否是您想要的,因为我不知道哪种类型的信息。输出,但您可以看到QScrollArea是可见的。

class UIMainTeacher(object):
    def setupUI(self, MainWindow):
        MainWindow.setGeometry(50, 50, 400, 450)
        MainWindow.setFixedSize(1800, 1000)
        MainWindow.setWindowTitle("Main")

        self.mainWindow = MainWindow
        self.centralwid = QScrollArea(MainWindow)
        self.centralwid.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
        self.centralwidget = QWidget(self.centralwid)

        self.exitButton = QPushButton("Exit", self.centralwid)
        self.exitButton.move(1700, 0)
        self.CourseLabel = QLabel("No Kourse yet", self.centralwid)
        self.CourseLabel.move(900, 20)
        self.AddCourseButton = QPushButton('Add Course', self.centralwid)
        self.AddCourseButton.move(1700, 25)
        self.CourseLabel = QLabel("Course", self.centralwidget)
        self.CourseLabel.move(900, 20)
        self.AddStudentsButton = QPushButton("Add Students", self.centralwid)
        self.AddStudentsButton.move(1700, 100)

        self.taskLabel = QLabel("TASKS:", self.centralwidget)
        self.taskLabel.move(160, 20)
        self.AddTaskButton = QPushButton('Add Task', self.centralwid)
        self.AddTaskButton.move(1700, 50)

        self.centralwid.setWidget(self.centralwidget)
        MainWindow.setCentralWidget(self.centralwid)

        x, y = 600, 0
        for _ in range(200):
            label = QLabel("Test Test", self.centralwidget)
            label.move(x, y)
            y += 50
        self.centralwidget.setFixedWidth(800)
        self.centralwidget.setFixedHeight(y)

enter image description here

因此,如果您要添加更多元素,则必须计算并设置setFixedHeight(),另一种选择是使用布局,但是由于我不知道您期望什么设计,因此无法为您提供第二种解决方案。