4.3.1滑动条:QSlider
滑动条控件属于QSlider类,它提供了一个有界值垂直或水平滑动条。用户沿水平或垂直方向移动滑块,将所在的位置转换成一个合法范围内的整数值。QSlider类中的常用方法如下:
setMinimum():设置滑动条控件的最小值
setMaximum():设置滑动条控件的最大值
setSingleStep():设置滑动条控件递增/递减的步长值
setValue():设置滑动条控件的值
value():获得滑动条控件的值
setTickInterval():设置刻度间隔
setTickPosition():设置刻度标记的位置,可以输入一个枚举值指定刻度线相对于滑块和用户操作的位置。
枚举值如下:
QSlider.NoTicks:不绘制任何刻度线
QSlider.TicksBothSides:在滑块的两侧绘制刻度线
QSlider.TicksAbove:在(水平)滑块上方绘制刻度线
QSlider,TicksBelow:在(水平)滑块下方绘制刻度线
QSlider.TicksLeft:在(垂直)滑块左侧绘制刻度线
QSlider.TicksRight:在(垂直)滑块右侧绘制刻度线
QSlider类中的常用信号如下:
valueChanged:当滑块的值发生改变时发送
sliderPressed:当按下滑块时发送
sliderMoved:当拖动滑块时发送
sliderReleased:当释放滑块时发送
【例4.15】Qslider滑动条测试,如下:
import sys # 导入Python的系统模块,用于处理与Python解释器交互或访问由解释器使用或维护的变量和与解释器强烈交互的功能。
from PyQt6.QtWidgets import * # 从PyQt6.QtWidgets模块中导入所有类,这主要是为了使用PyQt6的图形用户界面组件。
from PyQt6.QtGui import QFont # 从PyQt6.QtGui模块中导入QFont类,用于设置字体。
from PyQt6.QtCore import Qt # 从PyQt6.QtCore模块中导入Qt,这个模块包含了一些核心的非GUI的功能。
class MyWidget(QWidget): # 定义一个名为MyWidget的类,继承自QWidget,QWidget是所有用户界面对象的基类。
def __init__(self, parent=None): # 定义类的构造函数,parent参数用于指定这个窗口部件的父部件。
super(MyWidget, self).__init__(parent) # 调用父类(即QWidget)的构造函数,进行初始化。
self.setWindowTitle("QSlider测试") # 设置窗口的标题为“QSlider测试”。
self.resize(300, 100) # 设置窗口的大小为300x100像素。
self.lb = QLabel("Python程序设计") # 创建一个QLabel对象,用于显示文本“Python程序设计”。
self.lb.setAlignment(Qt.AlignmentFlag.AlignCenter) # 设置QLabel中的文本居中对齐。
self.sl = QSlider(Qt.Orientation.Horizontal) # 创建一个水平方向的QSlider对象(滑动条)。
self.sl.setMinimum(0) # 设置滑动条的最小值为0。
self.sl.setMaximum(100) # 设置滑动条的最大值为100。
self.sl.setSingleStep(2) # 设置滑动条的步长为2,即每次滑动会改变2的值。
self.sl.setValue(20) # 设置滑动条的初始值为20。
self.sl.setTickPosition(QSlider.TickPosition.TicksBelow) # 设置滑动条的刻度位置在下方。
self.sl.setTickInterval(10) # 设置滑动条的刻度间隔为10,即每10个单位有一个刻度。
self.sl.valueChanged.connect(self.valueFunc) # 当滑动条的值改变时,触发valueFunc方法。
vLayout = QVBoxLayout() # 创建一个垂直布局管理器对象。
vLayout.addWidget(self.lb) # 将之前创建的QLabel添加到垂直布局中。
vLayout.addWidget(self.sl) # 将之前创建的QSlider添加到垂直布局中。
self.setLayout(vLayout) # 设置这个MyWidget部件的布局为之前创建的垂直布局。
def valueFunc(self): # 定义一个名为valueFunc的方法,用于处理滑动条值改变的事件。
size = self.sl.value() # 获取当前滑动条的值。
self.lb.setFont(QFont("Arial", size)) # 设置QLabel的字体为Arial,大小为滑动条的值。
print('当前值:%s' % size) # 打印滑动条的当前值。
if __name__ == '__main__': # 如果这个脚本是直接运行的(而不是被其他脚本导入的),则执行以下代码。
app = QApplication(sys.argv) # 创建一个QApplication对象,它是每一个PyQt6应用程序的入口点。
w = MyWidget() # 创建一个MyWidget对象。
w.show() # 显示这个MyWidget窗口。
sys.exit(app.exec()) # 进入应用程序的主事件循环,等待用户交互,直到应用程序关闭。
这段代码主要实现了一个基于PyQt6的图形用户界面(GUI)应用程序,它包含一个标签(QLabel)和一个水平滑动条(QSlider)。用户可以通过滑动条来调整标签中文字的大小,并且滑动条的当前值会被打印到控制台。
使用的布局和控件:
- 布局:
QVBoxLayout
:垂直布局,用于组织窗口中的部件,从上到下依次是标签和滑动条。
- 控件:
QWidget
:作为主窗口的基类。QLabel
:标签控件,用于显示文本。QSlider
:滑动条控件,允许用户通过拖动滑块来选择一个整数值。
说明:
1.创建水平方向滑动条,设置其属性。
2.先获得滑动条当前值,然后用该值设置标签控件的字号。
size = self.sl.value()
self.lb.setFont(QFont("Arial",size))
关键语句:
-
self.setWindowTitle("QSlider测试")
:设置窗口的标题为“QSlider测试”。 -
self.lb = QLabel("Python程序设计")
:创建一个标签,初始文本为“Python程序设计”。 -
self.sl = QSlider(Qt.Orientation.Horizontal)
:创建一个水平方向的滑动条。 -
self.sl.setMinimum(0)
和self.sl.setMaximum(100)
:设置滑动条的最小值和最大值分别为0和100。 -
self.sl.setSingleStep(2)
:设置滑动条的步长为2,即每次拖动滑块时值的变化量为2。 -
self.sl.setValue(20)
:设置滑动条的初始值为20。 -
self.sl.setTickPosition(QSlider.TickPosition.TicksBelow)
:设置滑动条的刻度位置在下方。 -
self.sl.setTickInterval(10)
:设置滑动条刻度的间隔为10。 -
self.sl.valueChanged.connect(self.valueFunc)
:将滑动条的valueChanged
信号连接到valueFunc
槽函数上,这样当滑动条的值改变时,valueFunc
会被调用。 -
self.lb.setFont(QFont("Arial", size))
:在valueFunc
槽函数中,根据滑动条的值(字体大小)设置标签的字体。 -
print('当前值:%s' % size)
:在valueFunc
槽函数中,打印滑动条的当前值。 -
vLayout.addWidget(self.lb)
和vLayout.addWidget(self.sl)
:将标签和滑动条添加到垂直布局中。