【问题标题】:List inside the object remembers it's members after creating a new one对象内的列表在创建新成员后会记住它的成员
【发布时间】:2011-08-16 21:25:01
【问题描述】:

在根类中,每次按下 F3 键时我都会创建新对象:

class Browser(QtGui.QMainWindow):
indexlist = None<br>some code
def keyPressEvent(self, keyEvent):<br> if keyEvent.key() == QtCore.Qt.Key_F3:<br> keyEvent.accept()
self.indexlist = self.ui.treeView.selectedIndexes()<br> compareWin = CompareBox(self.indexlist, self)
if compareWin.error == 1:<br> self.indexlist = None<br> else:
self.indexlist = None<br> compareWin.setModal(True)
compareWin.show()

我有一堂课:

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


当我的应用程序工作时,我会重复创建这些对象,并且每次创建新对象时,它都会记住前一个对象的参数列表成员。 我试过: del(parameterlist) 但它没有帮助。 此外,我注意到这些对象的析构函数仅在应用程序关闭时才被调用。但我的朋友告诉我,这是用于检查对话窗口如何结束的 Qt 功能。我必须承认我很困惑,完全不知道发生了什么。

【问题讨论】:

  • 您使用的是类变量而不是实例变量。不要在类体中初始化paramrterlist,而是在构造函数中使用self.parameterlist = []
  • 非常感谢,我知道我的错误一定很简单,但我没有想到。非常感谢。

标签: python qt pyqt pyqt4


【解决方案1】:

您在类中删除的参数列表对于您创建的每个实例都是相同的。

你应该试试这样的:

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

【讨论】:

    猜你喜欢
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 2014-10-13
    • 2019-10-24
    相关资源
    最近更新 更多