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窗口应用。以下是代码的详细解释:
功能:
- 创建了一个窗口,窗口标题为“QScrollBar测试”。
- 在窗口中放置了三个水平排列的滚动条(
QScrollBar
)。 - 每个滚动条的最大值被设置为255。
- 当用户移动任何一个滚动条的滑块时,都会在控制台打印出三个滚动条的当前值。
布局和控件:
- 布局:使用了
QHBoxLayout
,这是一个水平布局,使得三个滚动条可以水平排列。 - 控件:
QWidget
:这是主窗口,所有的其他控件都放置在这个窗口上。QScrollBar
:这是滚动条控件,用于接收用户的输入(滑动)。在这个代码中,有三个滚动条实例(self.s1
,self.s2
,self.s3
)。
说明 :
当移动滑块时,将sliderMoved信号与槽函数sliderval连接起来。
self.sl.sliderMoved.connect(self.sliderval)
关键语句:
self.setWindowTitle('QScrollBar测试')
:设置窗口的标题。self.s1.setMaximum(255)
、self.s2.setMaximum(255)
、self.s3.setMaximum(255)
:为三个滚动条设置最大值。self.s1.sliderMoved.connect(self.sliderval)
、self.s2.sliderMoved.connect(self.sliderval)
、self.s3.sliderMoved.connect(self.sliderval)
:将三个滚动条的sliderMoved
信号连接到sliderval
槽函数。这样,每当滚动条的滑块移动时,sliderval
函数就会被调用。self.sliderval()
:这是一个槽函数,用于处理滚动条滑块移动的事件。在这个函数中,它打印了三个滚动条的当前值。app.exec()
:这是PyQt6应用程序的主事件循环,它会一直运行,直到应用程序关闭。