Python 包含对象列表的PyQt4.deleteLater()

Python 包含对象列表的PyQt4.deleteLater(),python,pyqt4,Python,Pyqt4,因此,我目前正在使用PyQt4和Python3.4编写一个扫雷舰GUI。一切都很容易,除了我不能创造一个新的游戏。我的程序是这样设计的: 我有一个主文件,它只创建了一个我在Qt设计器中创建的Ui_主窗口。在该Ui_MainWindow类中,我创建了Board类的一个实例。Board类基本上是所有游戏的控制器。在这个Board类中,我有一个for循环,用于在框架上创建按钮。按钮实际上是列表中单元格类的实例(例如[Cell[0]、Cell[1]等)。单元格类继承自QPushButton类,因此我可以

因此,我目前正在使用PyQt4和Python3.4编写一个扫雷舰GUI。一切都很容易,除了我不能创造一个新的游戏。我的程序是这样设计的:

我有一个主文件,它只创建了一个我在Qt设计器中创建的Ui_主窗口。在该Ui_MainWindow类中,我创建了Board类的一个实例。Board类基本上是所有游戏的控制器。在这个Board类中,我有一个for循环,用于在框架上创建按钮。按钮实际上是列表中单元格类的实例(例如[Cell[0]、Cell[1]等)。单元格类继承自QPushButton类,因此我可以为鼠标按钮创建信号

除了我不能开始一个新游戏外,一切都很好。当用户说开始一个新游戏时,Board类应该删除所有按钮并重新绘制棋盘。它删除所有按钮但不重新绘制棋盘。我可能知道是什么导致了这一点,但我的测试似乎没有证明我的假设

以下是我认为发生的情况:

因为我在2D列表中跟踪单元格,所以当我调用.deleteLater()时(它仅计划删除),它会删除新的单元格类实例,因为我告诉Python删除与该列表元素关联的小部件。(示例数组[row][col]。deleteLater…cells=[]…cells[row]。append(Cell(…))

如果我上面说的没有意义,下面是我所有的代码:

Main.py

从主窗口导入Ui\u主窗口,QtGui
导入系统
如果名称=“\uuuuu main\uuuuuuuu”:
#创建GUI应用程序
application=QtGui.QApplication(sys.argv)
window=Ui\u MainWindow()
window.show()
sys.exit(application.exec_())