【发布时间】:2020-06-01 17:43:45
【问题描述】:
我正在使用 PyQt5 制作一个基本的 GUI 应用程序,并且需要在用户输入后动态创建 labels。现在,问题是它们不会显示在屏幕上,尽管对象本身是创建的。用户完成输入后,按下按钮时会调用此函数:
def set_result_labels(self):
font = QtGui.QFont()
font.setPointSize(15)
for i in range(len(self.text_parties_names)):
label = QtWidgets.QLabel(self.centralwidget)
setattr(self, f"label_{i+5}", label)
label.setGeometry(QtCore.QRect(700, (100+4*i), 50, 50))
label.setFont(font)
label.setText(self.text_parties_names[i])
label.setObjectName(f"label_{i+5}")
但是,如果我“明确地”创建它们,像这样:
self.label_5 = QtWidgets.QLabel(self.centralwidget)
self.label_5.setGeometry(QtCore.QRect(600, 400, 171, 40))
self.label_5.setFont(font)
self.label_5.setText(self.text_parties_names[0])
self.label_5.setObjectName("label_25")
它可以正常工作。我不明白为什么。
【问题讨论】:
-
我现在只能猜测,但也许每个循环都覆盖
label变量不是一个好主意。尝试将所有标签保存在一个列表中 -
添加
label.show() -
@eyllanesc 实际上这解决了问题,我不敢相信。谢谢
标签: python-3.x pyqt5