PyQt6第四章控件功能之4.2常用控件(4.3.3滚动条: QScrollBar)

4.3.3滚动条: QScrollBar

滚动条包括水平滚动条 HorizontalScrollBar和垂直滚动条VerticalScrollBar,可以扩大当前窗口的有效装载面积,对应QScrollBar类。

QScrollBar滚动条类的常用方法如下:

setMinimum():设置滚动条最小值

setMaximum():设置滚动条最大值

setOrientation():设置滚动条显示方向(Qt.x):

Horizontal:水平滚动条

Vertical:垂直滚动条

setValue():设置滚动条的值

value():获取滚动条的当前值

QScrollBar滚动条类的常用信号如下:

valueChanged:当滚动条的值发生改变时发射该信号

sliderMoved:当用户拖动滚动条的滑块时发射该信号

【例4.17】QScrollBar滚动条测试,如下:
import sys  # 导入sys模块,用于处理Python解释器相关的功能,如命令行参数等。

from PyQt6.QtCore import *  # 从PyQt6.QtCore模块中导入所有内容,这个模块包含了Qt核心的非GUI功能。

from PyQt6.QtGui import *  # 从PyQt6.QtGui模块中导入所有内容,这个模块提供了GUI相关的绘图、颜色和字体等类。

from PyQt6.QtGui import QColor  # 从PyQt6.QtGui模块中单独导入QColor类,用于处理颜色。

from PyQt6.QtWidgets import *  # 从PyQt6.QtWidgets模块中导入所有内容,这个模块包含了创建和管理应用程序用户界面的类。

from PyQt6.QtWidgets import QScrollBar  # 从PyQt6.QtWidgets模块中单独导入QScrollBar类,用于创建滚动条。


class Example(QWidget):  # 定义一个名为Example的类,继承自QWidget,作为主窗口部件。

    def __init__(self):  # 类的构造函数,用于初始化对象。

        super(Example, self).__init__()  # 调用父类QWidget的构造函数,进行初始化。

        self.setWindowTitle('QScrollBar测试')  # 设置窗口的标题为'QScrollBar测试'。

        self.initUI()  # 调用initUI方法,初始化用户界面。

    def initUI(self):  # 初始化用户界面的方法。

        hbox = QHBoxLayout()  # 创建一个水平布局对象。

        self.s1 = QScrollBar()  # 创建一个QScrollBar对象,并赋值给self.s1。

        self.s1.setMaximum(255)  # 设置self.s1滚动条的最大值为255。

        self.s1.sliderMoved.connect(self.sliderval)  # 当self.s1的滑块移动时,连接信号到self.sliderval方法。

        self.s2 = QScrollBar()  # 创建第二个QScrollBar对象,并赋值给self.s2。

        self.s2.setMaximum(255)  # 设置self.s2滚动条的最大值为255。

        self.s2.sliderMoved.connect(self.sliderval)  # 当self.s2的滑块移动时,连接信号到self.sliderval方法。

        self.s3 = QScrollBar()  # 创建第三个QScrollBar对象,并赋值给self.s3。

        self.s3.setMaximum(255)  # 设置self.s3滚动条的最大值为255。

        self.s3.sliderMoved.connect(self.sliderval)  # 当self.s3的滑块移动时,连接信号到self.sliderval方法。

        hbox.addWidget(self.s1)  # 将self.s1滚动条添加到水平布局中。

        hbox.addWidget(self.s2)  # 将self.s2滚动条添加到水平布局中。

        hbox.addWidget(self.s3)  # 将self.s3滚动条添加到水平布局中。

        self.setGeometry(300, 300, 300, 200)  # 设置窗口的几何位置,分别是x坐标、y坐标、宽度和高度。

        self.setLayout(hbox)  # 设置窗口的布局为之前创建的水平布局。

    def sliderval(self):  # 定义一个方法,用于处理滚动条的滑块移动事件。

        print(self.s1.value(), self.s2.value(), self.s3.value())  # 当任何一个滚动条的滑块移动时,打印出三个滚动条的当前值。


if __name__ == '__main__':  # 判断当前脚本是否作为主程序运行。

    app = QApplication(sys.argv)  # 创建一个QApplication对象,用于管理应用程序级别的资源。

    w = Example()  # 创建一个Example对象,即应用程序的主窗口部件。

    w.show()  # 显示窗口部件。

    sys.exit(app.exec())  # 进入应用程序的主事件循环,等待用户交互,直到应用程序关闭。

这段代码主要实现了一个包含三个滚动条的简单PyQt6窗口应用。以下是代码的详细解释:

功能

  1. 创建了一个窗口,窗口标题为“QScrollBar测试”。
  2. 在窗口中放置了三个水平排列的滚动条(QScrollBar)。
  3. 每个滚动条的最大值被设置为255。
  4. 当用户移动任何一个滚动条的滑块时,都会在控制台打印出三个滚动条的当前值。

布局和控件

  1. 布局:使用了QHBoxLayout,这是一个水平布局,使得三个滚动条可以水平排列。
  2. 控件
    • QWidget:这是主窗口,所有的其他控件都放置在这个窗口上。
    • QScrollBar:这是滚动条控件,用于接收用户的输入(滑动)。在这个代码中,有三个滚动条实例(self.s1self.s2self.s3)。

说明 :

当移动滑块时,将sliderMoved信号与槽函数sliderval连接起来。

self.sl.sliderMoved.connect(self.sliderval)

关键语句

  1. self.setWindowTitle('QScrollBar测试'):设置窗口的标题。
  2. self.s1.setMaximum(255)self.s2.setMaximum(255)self.s3.setMaximum(255):为三个滚动条设置最大值。
  3. self.s1.sliderMoved.connect(self.sliderval)self.s2.sliderMoved.connect(self.sliderval)self.s3.sliderMoved.connect(self.sliderval):将三个滚动条的sliderMoved信号连接到sliderval槽函数。这样,每当滚动条的滑块移动时,sliderval函数就会被调用。
  4. self.sliderval():这是一个槽函数,用于处理滚动条滑块移动的事件。在这个函数中,它打印了三个滚动条的当前值。
  5. app.exec():这是PyQt6应用程序的主事件循环,它会一直运行,直到应用程序关闭。

注意:虽然代码的功能是打印三个滚动条的当前值,但存在一个潜在的问题。sliderval函数没有区分是哪个滚动条触发了事件,因此无论哪个滚动条移动,它都会打印所有三个滚动条的值。如果你只想打印移动的那个滚动条的值,你需要在sliderval函数中添加一些逻辑来区分是哪个滚动条触发了事件。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值