- 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,运行程序观察进度条的变化。