0

所以我从一个范围内动态创建 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()

它适用于最后一个,但在此之前没有。因此它将删除列表的底部。

有任何想法吗?

4

1 回答 1

2
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()
于 2012-11-30T12:34:17.910 回答