📜  PyQt5 QScrollBar – 滑块变化(1)

📅  最后修改于: 2023-12-03 15:18:49.125000             🧑  作者: Mango

PyQt5 QScrollBar – 滑块变化

PyQt5 QScrollBar是一个用于在PyQt5中实现滚动条的类。在这个教程中,我们将学习如何基于QScrollBar响应滑块的变化事件。

简介

QScrollBar类提供了一个滚动条部件,可以响应用户的滑块变化事件。我们通常可以使用QScrollBar来滚动QAbstractScrollArea类派生的部件,例如QTextEdit和QListWidget等。

示例

在这个例子中,我们将创建一个QScrollBar部件,并响应滑块的变化事件。每次滑块移动的时候,我们将在窗口中心的Label控件中显示相应的值。

from PyQt5.QtWidgets import QApplication, QMainWindow, QScrollBar, QLabel, QVBoxLayout, QWidget
from PyQt5.QtCore import Qt

class Example(QMainWindow):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        scroll = QScrollBar(Qt.Horizontal, self) # 创建QScrollBar

        # 创建Label
        self.label = QLabel(self)
        self.label.setAlignment(Qt.AlignCenter)
        self.label.setGeometry(50, 50, 200, 30)

        # 布局管理
        layout = QVBoxLayout()
        layout.addWidget(scroll)
        self.centralWidget = QWidget()
        self.centralWidget.setLayout(layout)
        self.setCentralWidget(self.centralWidget)

        scroll.sliderMoved.connect(self.onSliderMoved) # 连接滑块移动事件

        self.setWindowTitle('QScrollBar Demo')
        self.setGeometry(300, 300, 300, 200)
        self.show()

    def onSliderMoved(self, value):
        self.label.setText(str(value)) # 在Label中显示滑块数值

if __name__ == '__main__':
    app = QApplication([])
    exm = Example()
    app.exec_()
代码解析

我们首先导入了必要的PyQt5模块,然后创建了一个继承自QMainWindow的Example类。在__init__()方法中,我们通过调用initUI()方法来初始化UI界面。

在initUI()方法中,我们创建了一个水平方向的QScrollBar,以及一个居中的Label控件用于显示滑块的数值。我们使用QVBoxLayout将滑块和Label两个控件放在一个QWidget中,并将其设置为主窗口的中心部件。

scroll = QScrollBar(Qt.Horizontal, self) # 创建QScrollBar

self.label = QLabel(self) # 创建Label

layout = QVBoxLayout()
layout.addWidget(scroll)
self.centralWidget = QWidget()
self.centralWidget.setLayout(layout)
self.setCentralWidget(self.centralWidget)

我们使用了QScrollBar的sliderMoved()信号,将其连接到onSliderMoved()方法。在onSliderMoved()方法中,我们使用QLabel的setText()方法,在Label中显示滑块的数值。

scroll.sliderMoved.connect(self.onSliderMoved)

def onSliderMoved(self, value):
    self.label.setText(str(value))
总结

到此为止,我们已经学会了如何使用PyQt5 QScrollBar类,并响应滑块的变化事件。通过本教程的学习,我们可以在实际项目中运用这些技术,编写出更加完善的PyQt5程序。