2012-11-30 38 views
0

所以我動態創建QLineEdit的公司從範圍:動態刪除QLineEdit的PyQt4中

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