在PyQT4中动态删除QLineEdit

时间:2012-11-30 12:07:01

标签: python pyqt

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

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

有什么想法吗?

1 个答案:

答案 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()