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

sQLineEdit の名前に設定してい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 に答える