首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >游戏重启PyQT4 Python

游戏重启PyQT4 Python
EN

Stack Overflow用户
提问于 2018-07-30 02:19:29
回答 1查看 27关注 0票数 0

我用PyQT4做了一个简单的Hangman游戏。但是我在创建restart()方法时遇到了问题。

我试过了:

代码语言:javascript
复制
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)

换句话说,我删除了创建的每个对象。不知何故,我得到了输出:

代码语言:javascript
复制
MainWindow.setCentralWidget(self.centralwidget)
AttributeError: 'QWidget' object has no attribute 'setCentralWidget'

当我想要第二次调用我的setUpUi()时,我已经想不出需要传递什么参数了……

我有另外一个问题。我的重启几乎可以正常工作。但我还有另外一个问题。包含图形元素的像素图(一个接一个地挂起设备构建元素- 10个jpg文件,如img1、img2...)。对于第一个游戏,它工作得很好。在9个错误之后,整个UI应该重新构建……但之后像素图就不显示了..。我试着移除

代码语言:javascript
复制
self.pic.setParent(None)

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-30 03:10:08

您在主窗口中创建的中心小部件显然不是主窗口,而是窗口上的小部件。当然,试图将其用作MainWindow是行不通的。

如果你想重用同一个主窗口,你需要保留它,这样你才能重用它。也许有一个更好的地方可以做到这一点-如果没有任何相关的代码,很难看出如何使用这个类-但一件显而易见的事情就是将它存储在setupUI

代码语言:javascript
复制
def setupUi(self, MainWindow):
    MainWindow.setObjectName(_fromUtf8("MainWindow"))
    MainWindow.resize(1188, 696)
    self.mainwindow = MainWindow
    # …

…然后你就可以重用它了:

代码语言:javascript
复制
def restartGame(self):
    # …
    self.setupUi(self.mainwindow)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51583236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档