(1)垂直滚动条
#coding=gbk
from PyQt5.QtWidgets import QApplication, QLabel, QScrollArea, QVBoxLayout, QWidget, QSizePolicy
from PyQt5.QtCore import Qt
app = QApplication([])
window = QWidget()
# 创建 QLabel 控件和文本内容
label = QLabel("这是一段非常长的文本,\n我希望在 QScrollArea 中显示,并且能够通过垂直滚动条查看全部内容。" * 50)
# 调整 QLabel 的大小策略,让它可以自适应 QScrollArea 的尺寸变化
label.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Maximum)
# 创建 QScrollArea 控件
scroll_area = QScrollArea()
# 设置 QScrollArea 中的控件
scroll_area.setWidget(label)
# 设置 QScrollArea 只显示垂直滚动条
scroll_area.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
scroll_area.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
# 创建布局并将 QScrollArea 放置其中
layout = QVBoxLayout()
layout.addWidget(scroll_area)
# 将布局放入窗口中并展示窗口
window.setLayout(layout)
window.show()
# 执行 Qt 主循环
app.exec_()
在这个示例中,我们创建了一个 QWidget 对象,并在它内部放置了一个 QScrollArea 控件和一个 QLabel 控件。将 QLabel 放置在 QScrollArea 内的方法同上一个示例一样。接着,我们设置了 QLabel 显示的文本内容。然后,我们调用 setVerticalScrollBarPolicy() 方法设置 QScrollArea 只显示垂直滚动条,这样用户在查看完整文本时只需要使用垂直滚动条即可。最后,我们将 QScrollArea 加到 QWidget 的 layout 中,并将 QWidget 显示出来。
(2)水平+垂直滚动条
#coding=gbk
from PyQt5.QtWidgets import QApplication, QLabel, QScrollArea, QVBoxLayout, QWidget, QSizePolicy
from PyQt5.QtCore import Qt
# 创建 QLabel 控件和文本内容
label = QLabel("这是一段非常\n长的文本,我希望在 QScrollArea 中显示,并且能够通过水平和垂直滚动条查看全部内容。" * 50)
# 调整 QLabel 的大小策略,让它可以自适应 QScrollArea 的尺寸变化
label.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Maximum)
# 创建 QScrollArea 控件
scroll_area = QScrollArea()
# 设置 QScrollArea 中的控件
scroll_area.setWidget(label)
# 设置 QScrollArea 同时显示水平和垂直滚动条
scroll_area.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
scroll_area.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
# 创建布局并将 QScrollArea 放置其中
layout = QVBoxLayout()
layout.addWidget(scroll_area)
# 将布局放入窗口中并展示窗口
window.setLayout(layout)
window.show()
# 执行 Qt 主循环
app.exec_()
在这个示例中,我们将 QScrollArea 的水平滚动条策略设置为 Qt.ScrollBarAlwaysOn,从而使得水平滚动条会被一直显示。这样用户既可以左右滑动来查看完整内容,也可以上下滑动以浏览整段文本。同时,我们还通过设置 QLabel 的大小策略,让它可以自适应 QScrollArea 的尺寸变化,这样就避免了文本内容的部分出现在水平滚动条下方的情况。