游戏重启 PyQT4 Python

Game restart PyQT4 Python

我已经使用 PyQT4 完成了简单的 Hangman 游戏。但是我在创建 restart() 方法时遇到了麻烦。

我试过了:

class Ui_MainWindow(QtGui.QMainWindow):
def setupUi(self, MainWindow):
    MainWindow.setObjectName(_fromUtf8("MainWindow"))
    MainWindow.resize(1188, 696)
    MainWindow.setStyleSheet(_fromUtf8("background-color: black;"))
    self.centralwidget = QtGui.QWidget(MainWindow)
    self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
    self.statusbar = QtGui.QStatusBar(MainWindow)
    self.statusbar.setObjectName(_fromUtf8("statusbar"))
    self.buttons = []
    self.setUpKeyboard()
    MainWindow.setCentralWidget(self.centralwidget)
    self.menubar = QtGui.QMenuBar(MainWindow)
    self.menubar.setGeometry(QtCore.QRect(0, 0, 1188, 25))
    self.menubar.setObjectName(_fromUtf8("menubar"))
    MainWindow.setMenuBar(self.menubar)
    MainWindow.setStatusBar(self.statusbar)

    self.pic = QtGui.QLabel(self.mainwindow)
    self.pic.setPixmap(QtGui.QPixmap(os.getcwd() + "/img/s0.jpg"))
    self.pic.setGeometry(50, 150, 450, 280)
    self.pic.setObjectName(_fromUtf8("pic"))

....

def restartGame(self):
    self.wordLabel.setText(" ")
    for i in range(26):
        self.buttons[i].setParent(None)
    self.counterLabel.setParent(None)
    self.keyWordHidden = ""
    self.keyWord = ""
    self.pic.setParent(None)
    self.setupUi(self.centralwidget)

换句话说,我正在删除创建的每个对象。我以某种方式得到输出:

MainWindow.setCentralWidget(self.centralwidget)
AttributeError: 'QWidget' object has no attribute 'setCentralWidget'

我运行不知道当我想第二次调用我的 setUpUi() 时我需要将什么作为参数传递...

还有一个问题。我的重启工作几乎正常。但是我遇到了另一个问题。包含图形元素的像素图(挂机逐个构建元素 - 10 个 jpg 文件,如 img1、img2...)。 对于第一个游戏,它运行良好。在 9 个错误之后,整个 UI 应该重新构建......但是像素图没有出现......我试图删除

self.pic.setParent(None)

然后再次将 "img10.jpg" 切换为 "img1.jpg"。但这于事无补。

您在主 window 上创建的中央小部件显然不是主 window,它是 window 上的一个小部件。所以当然尝试将它用作 MainWindow 是行不通的。

如果您想重复使用同一个主 window,您需要保留它以便重复使用。可能有更好的地方可以做到这一点——如果没有任何相关代码,很难看出你是如何使用这个 class 的——但是一件显而易见的事情就是将它存储在 setupUI 中:

def setupUi(self, MainWindow):
    MainWindow.setObjectName(_fromUtf8("MainWindow"))
    MainWindow.resize(1188, 696)
    self.mainwindow = MainWindow
    # …

… 然后您可以重复使用它:

def restartGame(self):
    # …
    self.setupUi(self.mainwindow)