要用循环在 PyQt5 中创建 16 个独立的进度条组件,可以将每个进度条实例存储在一个列表或字典中,从而保持它们的独立性。每个进度条可以被单独控制,不会相互影响。
以下是使用 QVBoxLayout
将 16 个独立的 QProgressBar
添加到布局中的示例代码。每个进度条的值都可以独立控制。
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QProgressBar, QVBoxLayout, QPushButton
from PyQt5.QtCore import Qt
class ProgressBarWindow(QWidget):
def __init__(self, parent=None):
super(ProgressBarWindow, self).__init__(parent)
# 创建一个垂直布局
self.layout = QVBoxLayout()
# 创建一个列表来存储进度条
self.progress_bars = []
# 循环创建 16 个独立的进度条
for i in range(16):
progress_bar = QProgressBar(self)
progress_bar.setMinimum(0)
progress_bar.setMaximum(100)
progress_bar.setValue(0) # 初始进度为 0
progress_bar.setAlignment(Qt.AlignCenter) # 让进度值显示居中
self.progress_bars.append(progress_bar) # 将进度条添加到列表中
self.layout.addWidget(progress_bar) # 将进度条添加到布局中
# 添加一个按钮来更新所有进度条
self.update_button = QPushButton("Update Progress Bars", self)
self.update_button.clicked.connect(self.update_progress_bars)
self.layout.addWidget(self.update_button)
# 设置窗口的布局
self.setLayout(self.layout)
def update_progress_bars(self):
# 独立更新每个进度条的值
for i, progress_bar in enumerate(self.progress_bars):
progress_value = (i + 1) * 5 # 示例:每个进度条的进度是不同的
progress_bar.setValue(progress_value)
if __name__ == "__main__":
app = QApplication(sys.argv)
# 创建主窗口并添加进度条
main_window = ProgressBarWindow()
main_window.setWindowTitle("16 Independent Progress Bars")
main_window.resize(300, 600)
# 显示窗口
main_window.show()
sys.exit(app.exec_())
progress_bars
列表:用于存储每个QProgressBar
实例,从而确保它们是独立的。通过存储在列表中,你可以轻松访问每个进度条。setValue()
方法:你可以通过setValue()
方法独立设置每个进度条的进度值。update_button
按钮:点击该按钮时会调用update_progress_bars
方法,示例中通过(i + 1) * 5
来设置不同的进度值,但你可以根据实际情况独立更新每个进度条的值。- 布局管理:使用
QVBoxLayout
来垂直排列进度条和按钮。