📅  最后修改于: 2023-12-03 15:03:56.579000             🧑  作者: Mango
在 PyQt5 中,可以使用 QProgressBar 来创建进度条。QProgressBar 可以在界面中显示操作的进度,并提供某些事件以跟踪进度。
另外,还可以使用 QToolTip 设置在进度条上的工具提示,以提供更多的信息。
要创建一个进度条,可以使用以下代码:
from PyQt5.QtWidgets import QProgressBar
progress_bar = QProgressBar()
可以将进度条添加到布局中,以使其显示在窗口中。还可以使用 setRange() 方法设置进度条的最小值和最大值,并使用 setValue() 方法设置进度条的当前值。以下是一个示例:
from PyQt5.QtWidgets import QApplication, QMainWindow, QProgressBar, QVBoxLayout, QWidget
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
progress_bar = QProgressBar()
progress_bar.setRange(0, 100)
progress_bar.setValue(50)
central_widget = QWidget()
layout = QVBoxLayout()
layout.addWidget(progress_bar)
central_widget.setLayout(layout)
self.setCentralWidget(central_widget)
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
进度条还可以发出值改变事件,以便您可以跟踪操作的进度。可以使用 valueChanged 信号来捕获这些事件。以下是一个示例:
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QMainWindow, QProgressBar, QPushButton, QVBoxLayout, QWidget
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.progress_bar = QProgressBar()
self.progress_bar.setRange(0, 100)
button = QPushButton('Start')
button.clicked.connect(self.start_progress)
central_widget = QWidget()
layout = QVBoxLayout()
layout.addWidget(self.progress_bar)
layout.addWidget(button)
central_widget.setLayout(layout)
self.setCentralWidget(central_widget)
def start_progress(self):
self.progress_bar.setValue(0)
for i in range(101):
self.progress_bar.setValue(i)
QApplication.processEvents()
注意,为了使进度条更新,需要调用 QApplication.processEvents() 以处理挂起的事件。
要在进度条上设置工具提示,可以使用 setToolTip() 方法。以下是一个示例:
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QMainWindow, QProgressBar, QWidget
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
progress_bar = QProgressBar()
progress_bar.setRange(0, 100)
progress_bar.setValue(50)
progress_bar.setToolTip('This is the progress bar.')
central_widget = QWidget()
central_widget.setToolTip('This is the central widget.')
central_widget.setMouseTracking(True)
central_widget.setLayout(QVBoxLayout())
central_widget.layout().addWidget(progress_bar)
self.setCentralWidget(central_widget)
def mouseMoveEvent(self, event):
print(event.pos())
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
在这个示例中,我们还将 setMouseTracking() 方法设置为 True,以便在鼠标移动到中央小部件上时打印鼠标位置。