滚动区域控件QScrollArea

190 阅读1分钟

QScrollArea 是 PyQt6 中用于创建可滚动视图区域的控件,当内容超出可视区域时自动显示滚动条。

image.png

实现代码

from PyQt6.QtWidgets import QApplication, QWidget, QScrollArea, QLabel, QHBoxLayout, QPushButton, QVBoxLayout
import sys
from PyQt6.QtGui import QPixmap
from PyQt6.QtCore import Qt


class MainWindows(QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.ui()

    def ui(self):
        self.setWindowTitle("可滚动视图区域")
        self.show()
        ####################################
        # 创建两个QScrollArea
        ####################################
        self.pic_scrollarea = QScrollArea()
        self.btn_scrollerea = QScrollArea()

        self.label1 = QLabel()
        self.label1.setPixmap(
            QPixmap("/Users/wangjien/PycharmProjects/pythonGit/PyQt6学习/2_书籍学习/2_2_控件/Qscrollarea/meinv.jpeg"))
        self.pic_scrollarea.setWidget(self.label1)
        self.pic_scrollarea.ensureVisible(750, 750, 100, 100)

        btn_widget = QWidget()
        btn_layout = QHBoxLayout()
        for i in range(100):
            self.btn = QPushButton(f"按钮{i}")
            btn_layout.addWidget(self.btn)
        btn_widget.setLayout(btn_layout)
        self.btn_scrollerea.setWidget(btn_widget)
        self.btn_scrollerea.setAlignment(Qt.AlignmentFlag.AlignCenter)

        window_layout = QVBoxLayout()
        window_layout.addWidget(self.pic_scrollarea)
        window_layout.addWidget(self.btn_scrollerea)
        self.setLayout(window_layout)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MainWindows()
    sys.exit(app.exec())