炫意html5
最早CSS3和HTML5移动技术网站之一

PyQt5 QProgressBar进度条的用法

QProgressBar 进度条其实就是滑块,可以设置其最小值、最大值、当前值,也可以设置其方向,如横向或者竖向。

QProgressBar 初始化函数非常简单,仅一个参数 parent,表示父组件,其定义如下:

QProgressBar(parent: QWidget = None)

最大值可以通过该对象的函数 setMaximum() 来设置,定义如下:

setMaximum(self, int)

最小值可以通过该对象的函数 setMinimum() 来设置,定义如下:

setMinimum(self, int)

当前值可以通过该对象的函数 setMinimum() 来设置,定义如下:

setValue(self, int)

方向可以通过该对象的函数 setOrientation() 来设置,定义如下:

setOrientation(self, Qt.Orientation)

下面的例子包含一个进度条和一个按钮,最开始时按钮显示“开始”,如图 1 所示。


图 1 进度条

在单击按钮后,启动定时器,每 0.1 秒修改进度条的值,此时地按钮显示为“暂停”,如图 2 所示。


图 2 运行中的进度条

如果这时单击按钮,将暂停定时器,同时按钮显示为“继续”,如图 3 所示。


图 3 暂停中的进度条

如果这时单击按钮,会启动定时器,并且进度条会继续按照原来的速度向前走,直到进度条走到最右边,这时按钮显示“重新开始”,并且停掉定时器,如图 4 所示。


图 4 到了终点的进度条

如果这时单击按钮,进度条会重置为 0,按钮显示为“暂停”,就和第一次单击按钮时一样,如图 5 所示。


图 5 重新开始运行的进度条

下面是这个应用程序的完整代码:

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, \
QPushButton, QProgressBar
from PyQt5.QtCore import QBasicTimer
class QProgressBarExample(QMainWindow):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
self.progressbar_obj1 = QProgressBar(self)
self.progressbar_obj1.setGeometry(30, 40, 200, 25)
self.button_obj1 = QPushButton(u'开始', self)
self.button_obj1.move(40, 80)
self.button_obj1.clicked.connect(self.on_button_clicked)
self.timer_obj1 = QBasicTimer()
self.step = 0
# 窗口的大小,前面两个参数是位置信息
# 后面两个参数是宽度和高度信息
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle(u'QProgressBar的演示程序')
self.show()
# 定时器处理函数
def timerEvent(self, e):
if self.step >= 100:
self.timer_obj1.stop()
self.button_obj1.setText(u'重新开始')
return
self.step = self.step + 1
self.progressbar_obj1.setValue(self.step)
def on_button_clicked(self):        # 按钮被单击后的处理函数
# 已经走到头了,重新启动起来
if self.progressbar_obj1.value() >= 100:
self.step = 0
self.progressbar_obj1.setValue(0)
self.timer_obj1.start(100, self)
self.button_obj1.setText(u'暂停')
else:
if self.timer_obj1.isActive():    # 如果正在运行中,那么暂停
self.timer_obj1.stop()
self.button_obj1.setText(u'继续')
else:                            # 如果处于暂停状态,那么启动起来
self.timer_obj1.start(100, self)
self.button_obj1.setText(u'暂停')
if __name__ == '__main__':
app = QApplication(sys.argv)
main_win = QProgressBarExample()
sys.exit(app.exec_())

炫意HTML5 » PyQt5 QProgressBar进度条的用法

Java基础教程Android基础教程