所以我从一个范围动态创建QLineEdit:
for w in range(x):
s = "s"+str(w)
self.s = QtGui.QLineEdit(self)
self.s.setGeometry(QtCore.QRect(15, y, 20, 40))
self.s.setObjectName(_fromUtf8(s))
self.s.show()
y += 40
我希望稍后删除它们。我尝试了很多东西,但它只删除了我添加的最后一个。我找不到任何解释原因:
for w in range(x):
s="s"+str(w)
self.s.deleteLater()
它适用于最后一个,但在此之前没有。因此,它将删除列表中最下面的一个。
有什么想法吗?
答案 0 :(得分:1)
for w in range(x):
s="s"+str(w)
self.s.deleteLater()
您正在将s
设置为QLineEdit的名称,但之后您将删除self.s
,这是一个完全不同的变量,它在第一个循环中设置为最后创建的QLineEdit。我想你想要这样的东西:
<强>创建强>
self.edits = []
for w in range(x):
s = "s"+str(w)
s = QtGui.QLineEdit(self)
s.setGeometry(QtCore.QRect(15, y, 20, 40))
s.setObjectName(_fromUtf8(s))
s_name.show()
self.edits.append(s)
y += 40
<强>删除强>
for s in self.edits:
s.deleteLater()