- QSlider介绍
- QProgressBar介绍
主要内容 #
完成效果 #
完成本节课程,能学会在窗口应用程序上使用滑动条和进度条控件。
效果如下:

收获 #
学习完本节内容,我们会学会如何创建QSlider,QProgressBar对象,以及通过进阶示例深入体会其作用。
1.QSlider介绍 #
QSlider是个有一个小滑块的组件,这个小滑块能拖着前后滑动,这个经常用于修改一些具有范围的数值。
以下是QSlider的简单示例:
# 注意,以下包都要导入,后面内容会用到
from PyQt5.QtWidgets import QWidget, QSlider, QProgressBar, QPushButton, QApplication
from PyQt5.QtCore import Qt, QBasicTimer
import sys
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 参数Qt.Horizontal设置滑块为水平方向滑动
sld = QSlider(Qt.Horizontal, self) # 创建一个QSlider对象
sld.setGeometry(30, 40, 100, 30) # 指定位置和大小
# 设置窗口的位置和大小,前两个参数表示离屏幕左上角的坐标,后两个参数表示窗口的大小
self.setGeometry(300, 300, 500, 500)
self.setWindowTitle('QSlider') # 设置窗口的标题
self.show() # 显示窗口
app = QApplication(sys.argv) # 创建应用程序
ex = Example() # 创建窗口对象
sys.exit(app.exec_()) # 设置关闭窗口后结束进程
拓展练习:运行上述程序,拖动滑块,体会QSlider的功能。
2.QProgressBar介绍 #
进度条是用来展示任务进度的,它的滚动能让用户了解到任务的进度。
QProgressBar组件提供了水平和垂直两种进度条,进度条可以设置最大值和最小值,默认情况是0~99。
以下是QProgressBar的较复杂示例,涉及部分进阶内容(可暂时不要求掌握),主要目的让同学们直观感受进度条的动态效果。
我们创建了一个水平的进度条和一个按钮,这个按钮控制进度条的开始和停止。
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.pbar = QProgressBar(self) # 创建一个水平的进度条
self.pbar.setGeometry(30, 40, 200, 25) # 指定大小和位置
self.btn = QPushButton('Start', self) # 创建一个开始按钮
self.btn.move(40, 80) # 移动位置
# 一旦触发了QPushButton 控件的点击事件,则会自动调用doAction函数
self.btn.clicked.connect(self.doAction) # 点击按钮时关联槽函数doAction
self.timer = QBasicTimer() # 创建一个定时器对象
self.step = 0 # 初始步数值设为0
self.setGeometry(300, 300, 280, 170)
self.setWindowTitle('QProgressBar')
self.show()
def timerEvent(self, e):
"""每个QObject对象或其子对象都有一个QObject.timerEvent方法。在本实例中,
为了响应定时器的超时事件,我们需要使用下面的代码重写进度条的timerEvent方法。"""
if self.step >= 100:
self.timer.stop() # 步长值超过100就停止
self.btn.setText('Finished') # 按钮显示已完成
return
self.step += 1 # 更新步长,每次+1
self.pbar.setValue(self.step) # 让进度条显示步长数值
def doAction(self):
"""用来控制开始和停止。"""
if self.timer.isActive():
self.timer.stop()
self.btn.setText('Start') # 按钮显示开始
else:
self.timer.start(100, self) # 调用start()方法启动定时器。这个方法有两个参数:过期时间和事件接收者。
self.btn.setText('Stop') # 按钮显示停止
将这部分代码,复制到第一节PyQt5代码框架替换class Example即可。
拓展练习:运行上述程序,点击开始按钮,观察进度条的变化。
小结 #
习题 #
- 习题1:尝试在创建QSlider时,第一个参数改为Qt.Vertical,运行程序观察滑块会有什么变化。
- 习题2:尝试将QProgressBar代码中的self.step += 1改为self.step += 10,运行程序观察进度条的变化。