繁体   English   中英

重新启动游戏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)

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

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

当我想第二次调用setUpUi()时,我的想法用光了。

还有另一个问题。 我的重启几乎可以正常工作。 但是我有另一个问题。 包含图形元素的像素图(悬挂设备一一建立元素-10个jpg文件,例如img1,img2 ...)。 对于第一个游戏,它可以正常工作。 在9个错误之后,应该重新构建整个UI。但是然后pixmap不会显示...我试图删除

self.pic.setParent(None)

然后再次将“ img10.jpg”切换为“ img1.jpg”。 但这无济于事。

您在主窗口上创建的中央小部件显然不是主窗口,而是窗口上的小部件。 因此,当然尝试将其用作MainWindow不会起作用。

如果要重用同一主窗口,则需要按住它以便可以重用。 可能有一个更好的地方—很难在没有任何相关代码的情况下看到如何使用此类—但是要做的一件显而易见的事情就是将其存储在setupUI

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM