我正在寻求有关在PyQT中向MainWindow添加滚动条的指导。看了几个例子之后,我能够使以下代码正常工作(环境是Python 3 + PyQt5 )。这是一个在QMainWindow上创建滚动条的小示例。调整大小时,它还会创建一个水平滚动条。
如何防止创建水平滚动条?
总的来说,这是添加滚动条的正确方法吗?
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class App(QMainWindow):
def __init__(self):
super().__init__()
self.title = 'Test'
self.left = 10
self.top = 10
self.width = 640
self.height = 480
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
# Create the Scroll Area
self.scrollArea = QScrollArea()
self.setCentralWidget(self.scrollArea)
self.scrollArea.setWidgetResizable(True)
self.scrollAreaWidgetContents = QWidget(self.scrollArea)
self.scrollAreaWidgetContents.setGeometry(QRect(0, 0, self.width, self.height))
self.scrollArea.setWidget(self.scrollAreaWidgetContents)
self.scrollAreaWidgetContents.setMinimumSize(QSize(400, 500))
# Create the Layout
self.scrollLayout = QVBoxLayout(self.scrollAreaWidgetContents)
self.layout = QVBoxLayout()
# Create the Labels
label1 = QLabel('Label 1', self)
label1.move(50, 50)
label2 = QLabel('Label 2', self)
label2.move(50, 100)
label3 = QLabel('Label 3', self)
label3.move(50, 150)
label4 = QLabel('Label 4', self)
label4.move(50, 200)
self.layout.addWidget(label1)
self.layout.addWidget(label2)
self.layout.addWidget(label3)
self.layout.addWidget(label4)
# Add the Layout
self.scrollLayout.addLayout(self.layout)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())