Список внутри объекта запоминает его членов после создания нового - PullRequest
0 голосов
/ 02 мая 2011

В корневом классе я создаю новый объект при каждом нажатии клавиш F3:

class Browser(QtGui.QMainWindow):<br> <code> indexlist = None
некоторый код
def keyPressEvent (self, keyEvent):
if keyEvent.key () == QtCore.Qt.Key_F3:
keyEvent.accept ()
self.indexlist = self.ui.treeView.selectedIndexes ()
compareWin = CompareBox (self.indexlist, self)
if compareWin.error == 1:
self.indexlist = Нет
else:
self.indexlist = Нет
compareWin.setModal (True)
compareWin.show ()

И у меня есть класс:

class CompareBox(QtGui.QDialog):<br> <code> parameterlist = []
def __init __ (self, indexlist = None, parent = None):
теперь немного кода
self.parameterlist.append (someobject)
снова некоторый код
self.parameterlist = []
self.close ()


Пока мое приложение работает, я создаю эти объекты неоднократно, и каждый раз, когда создается новый объект, он запоминает элементы списка параметров из предыдущего.Я пробовал: del (список параметров) но это не помогло.Также я заметил, что деструкторы для этих объектов вызываются только при закрытии приложения.Но мой друг сказал мне, что это функция Qt для проверки окончания диалогового окна.Я должен признать, что я довольно озадачен и совершенно не понимаю, что происходит.

1 Ответ

3 голосов
/ 02 мая 2011

список параметров, который вы добавили в класс, одинаков для каждого создаваемого вами экземпляра.

Вы должны попробовать что-то вроде этого:

class CompareBox(QtGui.QDialog):
    def __init__(self, indexlist=None, parent=None):
        some code now then
        self.parameterlist = []
        self.parameterlist.append(someobject) 
        again some code 
        self.close()
...