gpt4 book ai didi

python - 在 PYQT4 中创建和更新多个 QLabel

转载 作者:行者123 更新时间:2023-11-28 19:00:53 25 4
gpt4 key购买 nike

如何在循环中的小部件内创建多个(比如 56 个)标签?

假设我有一个名为 column 的列表:

column = ['a','b','c','d',.......'y','z']

我所做的是:

class ApplicationWindow_1(QWidget):

def __init__(self,parent = None):
super(ApplicationWindow_1,self).__init__(parent)
self.resize(400,900)

for i in range(len(column)):
column_name = str(column[i]) + '_label_name'
self.column_name = QLabel(column[i],self)
self.column_name.resize(120,30)
self.column_name.move(30,100+(i-1)*20)

infor_name = str(column[i]) + '_label_infor'
self.infor_name = QLabel(self)
self.infor_name.resize(120,30)
self.infor_name.move(230,100+(i-1)*20)

对于列表中的每个元素,都会有一个对应的空白 QLabel。通过使用 setText 函数单击复选按钮,所有空白 Qlabes 将同时更新。

UI 的简要 View

我知道这种方法不正确,因为我不应该使用字符串作为变量名,而且我在更新 infor_labels(空白标签)时遇到问题,因为我实际上无法调用它们。

谁能请提供建议?以上描述如有混淆之处,另行说明或补充。

最佳答案

您可以使用 setattr() 使用字符串动态创建变量,如下所示:

from PyQt4 import QtCore, QtGui


class ApplicationWindow_1(QtGui.QWidget):
def __init__(self,parent = None):
super(ApplicationWindow_1,self).__init__(parent)
flay = QtGui.QFormLayout(self)

texts = ["name", "address", "phone"]

for text in texts:
label_1 = QtGui.QLabel(text+": ")
label_1.setFixedSize(120, 30)
label_2 = QtGui.QLabel()
label_2.setFixedSize(120, 30)
flay.addRow(label_1, label_2)

# An attribute of the class is created with setattr()
setattr(self, "{}_infor_label".format(text), label_2)

# use
self.name_infor_label.setText("some name")
self.address_infor_label.setText("some address")
self.phone_infor_label.setText("some phone")


if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
w = ApplicationWindow_1()
w.show()
sys.exit(app.exec_())

关于python - 在 PYQT4 中创建和更新多个 QLabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52777002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com