下面是关于PyQt5中带点状边框的进度条的使用攻略。
1. 安装PyQt5
如果还没有安装PyQt5,可以使用pip install命令进行安装:
pip install pyqt5
2. 创建带点状边框的进度条
在PyQt5中,可以使用QProgressBar类创建进度条。而带点状边框的进度条可以通过设置样式表来实现。下面是创建带点状边框的进度条的代码:
from PyQt5.QtWidgets import QApplication, QProgressBar
from PyQt5.QtCore import Qt
app = QApplication([])
progress = QProgressBar()
progress.setStyleSheet("""
QProgressBar {
border: 2px solid grey;
border-radius: 5px;
text-align: center;
}
QProgressBar::chunk {
background-color: #CD96CD;
width: 5px;
margin: 0.5px;
}
""")
progress.setRange(0, 100)
progress.setValue(30)
progress.show()
app.exec_()
运行上述代码,将会得到一个带点状边框、初始值为30的进度条。
3. 示例 1:实现下载进度条
下面是一个示例,演示如何使用带点状边框的进度条来模拟文件下载过程中的进度:
import time
from PyQt5.QtWidgets import QApplication, QProgressBar
app = QApplication([])
progress = QProgressBar()
progress.setStyleSheet("""
QProgressBar {
border: 2px solid grey;
border-radius: 5px;
text-align: center;
}
QProgressBar::chunk {
background-color: #CD96CD;
width: 5px;
margin: 0.5px;
}
""")
progress.setRange(0, 100)
progress.show()
for i in range(101):
progress.setValue(i)
time.sleep(0.05)
app.exec_()
运行上述代码,将会得到一个模拟下载过程中的进度条。可以自行修改代码中的睡眠时间、循环次数等参数来实现更真实的下载效果。
4. 示例2:实现多任务进度条
下面是另一个示例,演示如何使用带点状边框的进度条来实现多任务进度:
import time
from PyQt5.QtWidgets import QApplication, QProgressBar, QVBoxLayout, QWidget, QPushButton
from PyQt5.QtCore import QThread, pyqtSignal
class MyThread(QThread):
progress_signal = pyqtSignal(int)
def __init__(self, name, count):
super().__init__()
self.name = name
self.count = count
def run(self):
for i in range(self.count):
self.progress_signal.emit(i)
time.sleep(0.05)
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
layout = QVBoxLayout()
button1 = QPushButton("任务1")
button1.clicked.connect(self.start_task1)
layout.addWidget(button1)
button2 = QPushButton("任务2")
button2.clicked.connect(self.start_task2)
layout.addWidget(button2)
self.progress = QProgressBar()
self.progress.setStyleSheet("""
QProgressBar {
border: 2px solid grey;
border-radius: 5px;
text-align: center;
}
QProgressBar::chunk {
background-color: #CD96CD;
width: 5px;
margin: 0.5px;
}
""")
self.progress.setRange(0, 100)
layout.addWidget(self.progress)
self.setLayout(layout)
def start_task1(self):
self.thread1 = MyThread("任务1", 101)
self.thread1.progress_signal.connect(self.update_progress)
self.thread1.start()
def start_task2(self):
self.thread2 = MyThread("任务2", 201)
self.thread2.progress_signal.connect(self.update_progress)
self.thread2.start()
def update_progress(self, value):
self.progress.setValue(value)
app = QApplication([])
widget = MyWidget()
widget.show()
app.exec_()
运行上述代码,将会得到一个带点状边框的进度条和两个任务按钮。每点击一个任务按钮,都会启动一个线程来模拟任务的执行过程,进度条也会随着任务的进展而相应更新。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PyQt5 – 带点状边框的进度条 - Python技术站