在循环体中,我需要创建不少具有完全相同特征但内容不同的容器。
这目前分三个阶段进行:
- 已创建
QWidget
- 某些外部特性被设置为
QWidget
- 一个新的容器被创建并绑定到
QWidget
循环重复一定次数(总是不同的)。
这让我很感兴趣,也许可以提前为容器制作一个模板,而不是每次都重新创建它?如果可能,请帮我优化代码。
from PyQt5 import QtCore, QtWidgets, QtGui
class MyWindow(QtWidgets.QWidget):
def __init__(self, parent = None):
super().__init__(parent)
self.main_box = QtWidgets.QVBoxLayout(self)
self.make()
def make(self):
for i in range(0, 5):
container = QtWidgets.QWidget()
container.setStyleSheet(box_qss)
container.setFixedHeight(50)
song_box = QtWidgets.QHBoxLayout(container)
self.main_box.addWidget(container)
box_qss = '''QWidget {
background-color: #1F252F;
border-radius: 5px;
}'''
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
window = MyWindow()
window.setWindowTitle(' ')
window.show()
sys.exit(app.exec_())
UPD:每个容器将有一个按钮和两个铭文(每个铭文的文字会有所不同):
from PyQt5 import QtCore, QtWidgets, QtGui
class MyWindow(QtWidgets.QWidget):
def __init__(self, parent = None):
super().__init__(parent)
self.main_box = QtWidgets.QVBoxLayout(self)
self.make()
def make(self):
for i in range(0, 5):
container = QtWidgets.QWidget()
container.setStyleSheet(box_qss)
container.setFixedHeight(50)
song_box = QtWidgets.QHBoxLayout(container)
self.main_box.addWidget(container)
btn = QtWidgets.QPushButton('Button')
btn.setStyleSheet(btn_qss)
song_box.addWidget(btn)
label = QtWidgets.QLabel('Text')
label.setStyleSheet(label_qss)
song_box.addWidget(label)
duration = QtWidgets.QLabel('00:00')
duration.setStyleSheet(label_qss)
song_box.addWidget(duration)
box_qss = '''QWidget {
background-color: #1F252F;
border-radius: 5px;
}'''
label_qss = '''QLabel {
color: white;
}'''
btn_qss = '''QPushButton {
background-color: #3A4256;
color: white;
}'''
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
window = MyWindow()
window.setWindowTitle(' ')
window.show()
sys.exit(app.exec_())
我建议这样尝试:
如果你有任何问题,写,我会评论。